2012-10-09 99 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問題。謝謝你,布魯默。 –