vb.net - поиск текстового файла по определенной строке, чтение с этой точки - PullRequest
1 голос
/ 01 февраля 2010

это, наверное, не так сложно сделать.Но у меня есть два текстовых файла.Первый получил список определенных ключевых слов.Каждое из этих ключевых слов подается в комбинированный список.

Теперь, когда я выбираю один из элементов в этом комбинированном списке, я хочу найти другой текстовый файл по тому же ключевому слову и прочитать его с следующего ключевого слова.А затем введите каждую строку в список.Надеюсь, я пойму себя.

Возможно, мне следует использовать INI-файл для этой цели, для меня это не имеет значения.

Текстовые файлы имеют такую ​​структуру;Текстовый файл1:

London
Oslo
New York
Hamburg
Amsterdam

Второй текстовый файл имеет такую ​​структуру;Текстовый файл2:

'London'
Apples
Oranges
Pears

'Oslo'
Pasta
Salami
Monkeyballs

'New York'
Dada
Duda
Dadadish

и т. Д. И т. Д.

Возможно ли это?Причина, по которой я хочу сделать это, состоит в том, чтобы создать полностью динамическую систему.Тот, который полностью полагается на любую информацию, хранящуюся в этих текстовых файлах.Я собираюсь построить довольно сложные строки из этих результатов позже.

Пока у меня есть это, чтобы прочитать первый файл и добавить каждую строку в поле со списком:

Dim oReadMenuFunction as System.IO.StreamReader
oReadMenuFunction = IO.File.OpenText("textfile1.txt")

Do While oReadMenuFunction.Peek <> -1
    Dim LineIn as String = oReadMenuFunction.ReadLine()
    Combobox.Items.Add(LineIn)
Loop

1 Ответ

1 голос
/ 01 февраля 2010

Вот пример функции, которую вы можете использовать для разбора вашего второго файла. Он принимает ключевое слово в качестве аргумента и возвращает связанные элементы:

Function ReadData(ByRef keyword As String) As IEnumerable(Of String)
    Dim result = New List(Of String)
    Using reader = New StreamReader("file2.txt")
        Dim line As String = reader.ReadLine()
        Dim take = False
        Do While line IsNot Nothing
            If line.StartsWith("'") Then
                take = False
            End If
            If String.Equals("'" + keyword + "'", line) Then
                take = True
            End If
            If take And Not String.IsNullOrEmpty(line) And Not line.StartsWith("'") Then
                result.Add(line)
            End If
            line = reader.ReadLine()
        Loop
    End Using
    Return result
End Function

И вы используете это так:

Dim items = ReadData("London")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...