我一直在阅读和阅读大量答案,修改代码,但我仍然无法弄清楚如何解决这个问题。
我有一个文本框,可以从.txt或.csv文件接收多行逗号分隔信息。例如:
Pearl Harbor; Ticonderoga CG-45; 300; 1000
Everett; Ticonderoga CG-46; 310; 1200年珍珠港; Burke DDG-110; 215; 800
现在将有一个组合框来选择一个端口(在这个例子中,选项将是珍珠港和埃弗雷特)。选择“珍珠港”后,另一个多线文本框将仅显示以“珍珠港”为首要元素的线条。
现在我可以写下来了:
Public Sub Readfile()
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会有多少行。
我有点迷失在这里。我不是要求任何人做魔法并给我一个我可以复制和粘贴的代码,但如果有人可以指导我完成这一点,我将不胜感激。
答案 0 :(得分:0)
首先,你最好使用List
而不是数组。特别是对于字符串的集合,它们更容易使用。有了这个,你是不对的,你不能单独命名你的线,因为你不知道会有多少。这就是为什么你需要创建一个行列表并循环遍历它们,比如......
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'。“
看哪!循环的力量!