0

我一直在阅读和阅读大量答案,修改代码,但我仍然无法弄清楚如何解决这个问题。

我有一个从 .txt 或 .csv 文件接收多行逗号分隔信息的文本框。例子:

珍珠港;提康德罗加 CG-45;300;1000
埃弗雷特;提康德罗加 CG-46;310;1200
珍珠港;伯克 DDG-110;215;800

现在将有一个组合框来选择一个端口(在此示例中,选项将是珍珠港和埃弗雷特)。选择“Pearl Harbour”后,另一个多行文本框将仅显示以“Pearl Harbour”为第一个元素的行。

现在是我能写的:

公共子读取文件()

TextBox1.Text = System.IO.File.ReadAllText("libro1.csv")<br>
Dim lines() As String<br>
lines = Split(TextBox1.Text, vbCrLf)<br>
Dim strline0 As String = lines(0)<br>
Dim strArray0() As String = strline0.Split(";")<br>
Dim strline1 As String = lines(1)<br>
Dim strArray1() As String = strline1.Split(";")<br>
...

End Sub

我发现的第一个问题是,对于 .csv 的每一行,我必须编写两行代码才能拥有一个包含所有信息的数组。但我不能这样做,因为我不知道 .csv 将有多少行。

我有点迷失在这里。我没有要求任何人做魔术并给我一个我可以复制和粘贴的代码,但如果有人能指导我完成这个,我将不胜感激。

4

1 回答 1

0

List首先,使用 a比使用数组更好。特别是对于字符串集合,它们更容易使用。有了这个,你不能单独命名你的行是正确的,因为你不知道会有多少行。这就是为什么您需要创建一个行列表并遍历它们,例如...

Public Sub Readfile()
    TextBox1.Text = System.IO.File.ReadAllText("libro1.csv")
    Dim lines As List(of String)
    Dim allResults As New List(of List(of String))

    lines = Split(TextBox1.Text, vbCrLf)

    For Each line In lines
        Dim result As List(Of String) = line.Split(CChar(";"))
        allResults.Add(result)
    Next
End Sub

这将允许您基本上说,“对于文件中的每一行,将每个分号分隔的部分放入一个名为‘result’的列表中。然后将‘result’放入另一个名为‘allResults’的结果列表中。 "

看哪!循环的力量!

于 2012-10-09T21:58:16.210 回答