编写可以打开文本文件并打乱在该文件中所找到的单词顺序的

2019-01-16 10:09:38丽君

现在,到了很有趣的这部分。建立一个 Do 循环,其一直运行到我们用完 Dictionary 对象中的所有单词。接着使用下面这两行代码从 0 和 Dictionary 对象中数据项的数目(或者至少是数据项的实际数减 1,因为 Dictionary 对象中的第一个数据项为第 0 项)之间随机选择一个数字:
Ranndomize
rndWord = Int((intWordsLeft - 0 + 1) * Rnd + 0)
之后我们将 intWordsLeft 值减 1;这样做是为了始终记住我们现在要处理的单词比之前所处理的少了一个。
那么我们需要这个随机数字做什么呢?我们现在要做的就是使用该值从 Dictionary 中随机抽取一个单词。为此,我们可以创建一个 Dictionary 项的集合,然后在变量 strText 中存储此随机选择的数据项数字的值:
colItems = objDictionary.Items
strText = colItems(rndWord)
换句话说,Banana 当前为 Dictionary 中的第 1 项。假定在生成随机数字的时候得到的是 1。这意味着我们将从 Dictionary 中将第 1 项的值取出;然后,也就意味着单词 Banana 被存储在变量 strText 中。 
明白了吗?从 Dictionary 中随机取出一个单词之后,我们即需要将该值存储到某个地方。为此我们使用数组 arrWords,使 strText 成为数组中的第一项:
Words(z) = strText
我们如何知道该值应成为第一项?因为我们将该值赋给第 z 项,而第 z 项等于 0。之后,我们立即将 z 加 1,z 将等于 1。这也意味着,通过循环下一次我们会将检索到的值赋给数组中的第二项。
单词 Banana 使用过之后,下一步就是将该单词从 Dictionary 中删除;否则我们可能会再次使用该单词。要删除此单词,只需调用 Dictionary 对象的 Remove 方法,将变量 strText 作为要删除的项进行传递即可:
objDictionary.Remove(strText)
一切均顺利完成之后,数组 arrWords 将包含一个从文本文件中所取出的已打乱顺序的单词的列表:
Banana
Elephant
Giraffe
Apple
Fish
Carrot
Horse
Dog
很好,是吧?随后我们只要打开文件 Words.txt(这次是进行写入),然后使用已打乱顺序的列表 arrWords 替换现有内容即可:

Set objFile = objFSO.OpenTextFile("c:scriptswords.txt", ForWriting) 
For Each strItem in arrWords 
    objFile.WriteLine strItem 
Next 
objFile.Close 
下次您的女儿(谁的女儿都一样)运行教育程序的时候,她所看到的将是以随机方式显示的单词。