0

私はたくさんの答えを読んだり読んだり、コードを修正したりしていますが、それでもこの問題を解決する方法がわかりません。

.txtまたは.csvファイルから複数行のコンマ区切り情報を受け取るテキストボックスがあります。例:

パールハーバー;タイコンデロガCG-45;300;1000
エベレット;タイコンデロガCG-46;310;1200
パールハーバー;バークDDG-110;215;800

これで、ポートを選択するためのコンボボックスが作成されます(この例では、オプションは真珠湾とエベレットになります)。「PearlHarbour」を選択すると、別の複数行のテキストボックスに、最初の要素として「PearlHarbour」が含まれる行のみが表示されます。

今、私が書くことができたものに行きます:

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のすべての行について、すべての情報を含む配列を作成するために、その2行のコードを記述しなければならないことです。しかし、.csvの行数がわからないため、それはできません。

私はここでちょっと迷子になりました。誰かに魔法をかけて、コピーして貼り付けることができるコードを教えてくれるように頼んではいないのですが、誰かが私を案内してくれたらありがたいです。

4

1 に答える 1

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」という別の結果リストに入れます。 「」

見よ!ループの力!

于 2012-10-09T21:58:16.210 に答える