Чтение разделенных запятыми строк из текстового поля

Я читал и читал тонны ответов, модифицировал код и до сих пор не могу понять, как решить эту проблему.

У меня есть текстовое поле, которое получает многострочную информацию через запятую из файла.txt или.csv. Пример:

Перл-Харбор; Тикондерога CG-45;300;1000
Эверетт; Тикондерога CG-46;310;1200
Перл-Харбор; Берк 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.

Я немного потерян здесь. Я никого не прошу творить чудеса и давать мне код, который я могу скопировать и вставить, но я был бы признателен, если бы кто-нибудь смог мне помочь в этом.

1 ответ

Решение

Во-первых, вы бы лучше использовать 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 ". "

Вот! Сила петель!

Другие вопросы по тегам