2012-10-09 102 views
0

我一直在阅读和阅读吨的答案,修改代码,仍然无法找出如何解决这个问题。从文本框中读取以逗号分隔的行

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

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

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

现在去什么我能写:

公用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

首先,您最好使用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'的结果列表中。“

看哪!循环的力量!

+0

我宁愿说“看!列表的力量!”。我不知道如何使用它们,但现在它们将解决我目前和未来的大部分vb问题。谢谢你,布鲁默。 –