从文本文件中分割行时我做错了什么

时间:2014-03-03 14:17:20

标签: vb.net

我正在为我的计算机科学计划进行测验,其想法是拥有关键词和定义。将向用户显示一个随机化的关键字和无线电按钮中的三个定义,其中一个必须是正确的答案。

我决定将我的关键字和我的定义放在同一个文件中:

Keyword1 = Definition1
Keyword2 = Definition2
Keyword3 = Definition3

在我的主表单上,我有以下循环:

For Each line As String In System.IO.File.ReadAllLines("my-file-path-here")
Dim Pair() As String = line.split("=")
LabelKeyword.text = Trim(Pair(0)) ' Needs Randomizing
RadioButtonDef1.text = Trim(Pair(1)) ' Needs randomizing
'RadioButtonDef2.text = 'Don't know needs randomizing
'RadioButtonDef3.text = 'Don't know needs randomizing
Next

我似乎无法弄清楚如何随机化关键字和定义。我的文本文件中还有15行,它似乎总是只读取最后一行。

所以我的问题是:

  1. 如何随机化关键字和定义,其中一个定义是当前关键字的答案。

  2. 为什么它只读取我文本文件的最后一行,如何解决?

  3. 我还需要能够在每个关键字与其定义两次匹配时才完成测验。他们所花的时间也需要在他们玩耍时进行记录。

1 个答案:

答案 0 :(得分:1)

您正在遍历文本文件中的所有行,但是您在同一控件中显示所有这些行。因此,每次遍历循环时,它都会覆盖上一次迭代中控件中的值。我强烈建议将值存储在内存中的某种数据结构中。然后您可以随意随机访问这些值。例如,您可以将所有值存储在Dictionary中,如下所示:

Dim dict As New Dictionary(Of String, String)()
For Each line As String In File.ReadAllLines("...")
    Dim pair() As String = line.Split("=")
    dict(pair(0)) = pair(1)
Next