Читать каждую четвертую строку из текстового файла - PullRequest
0 голосов
/ 07 января 2019

Итак, у меня есть текстовый файл со следующим:

Эндрю Ло
0276376352
13 Parsons St
Кевин Кайл
0376458374
29 Penrod Drive
Билли Мэдисон
06756355
16 Стаффорд-стрит

Теперь в моей форме есть ListBox. Когда форма загружается, я хотел бы прочитать каждую четвертую строку из текстового файла (каждое имя) и отобразить его в ListBox.

Все, что у меня сейчас есть, это следующее:

Dim People As String
People = System.IO.File.ReadAllLines("filelocation")(3)
ListBox1.Items.Add(People)

Это, однако, читает только строку номер 4, где я также хочу читать КАЖДУЮ четвертую строку после этого.

1 Ответ

0 голосов
/ 08 января 2019

Добавьте все строки, извлеченные из исходного файла, когда текущая строка кратна предварительно определенному количеству пропускаемых строк или 0, в ListBox и разрешите пользователю выбирать имя из списка для заполните некоторые ярлыки деталями, относящимися к выбранному имени.

  • Разобрать и извлечь имена людей из массива строк. Каждое имя можно найти по индексу, кратному значению, указанному в поле skipLines.
  • Добавить каждое имя в элемент управления ListBox.
  • Когда имя выбрано из списка имен ListBox, добавьте связанные детали к некоторым меткам (здесь именуются lblPhoneNumber и lblAddress). Чтобы определить правильную информацию в массиве, мы используем значение skipLines в качестве множителя на этот раз. Таким образом, даже если вы добавите некоторые подробности в список имен, вы найдете правильную информацию, изменяющую только значение skipLines.
    Вам необходимо подписаться на SelectedIndexChanged событие ListBox:

Public Class Form1

    private people As String()
    private skipLines As Integer = 0

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        skipLines = 3
        people = File.ReadAllLines([Source File])
        For line As Integer = 0 To people.Length - 1
            If line Mod skipLines = 0 Then
                ListBox1.Items.Add(people(line))
            End If
        Next
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim StartIndex As Integer = ListBox1.SelectedIndex * skipLines
        lblPhoneNumber.Text = people(StartIndex + 1)
        lblAddress.Text = people(StartIndex + 2)
    End Sub

End Class

Как это работает :

Определите количество пропускаемых строк. Мы хотим строку текста, затем пропустите 3 строки, здесь:
Dim skipLines As Integer = 3

Мы создаем массив строк. Он будет содержать вывод File.ReadAllLines, который, конечно, возвращает массив строк:
Dim people As String() = File.ReadAllLines([Source File])

Итерация всего содержимого массива строк, строка за строкой. Перечисление коллекции начинается с 0, поэтому мы анализируем список с 0 по количеству элементов - 1:
For line As Integer = 0 To people.Length - 1
(...)
Next

Условие If, если выполняется, когда номер текущей строки кратен skipLines.
Оператор Mod делит два числа и возвращает остаток от операции. Если напоминания нет, число line равно кратному skipLines, числу строк, которое мы хотим пропустить.
If line Mod skipLines = 0 Then
(...)
End If

Наконец, когда условие выполнено, добавьте содержимое массива строк (массив people) в индекс, представленный текущим значением line, в коллекцию ListBox.Items:
ListBox1.Items.Add(people(line))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...