从文本文件中读取每四行

时间:2019-01-07 20:11:41

标签: vb.net winforms

所以,我有一个包含以下内容的文本文件:

  

安德鲁·劳
  0276376352
  帕森斯街13号
  凯文·凯尔
  0376458374
  29 Penrod Drive
  比利·麦迪逊
  06756355
  斯塔福德街16号

现在在我的表单上,我有一个列表框。加载表单时,我想从文本文件(每个名称)中读取第四行,并将其显示在ListBox中。

我现在所拥有的是:

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

但是这只读取行号4,在那之后我也想读每四行。

1 个答案:

答案 0 :(得分:2)

当当前行是要跳过或0的预定义行数的倍数时,将从源文件中提取的所有字符串添加到列表框,并允许用户从列表中选择一个名称。列表以使用与所选名称相关的详细信息填充一些标签。

  • 从字符串数组中解析并提取人员名称。可以在索引中找到每个名称,该索引是skipLines字段指定的值的倍数。
  • 将每个名称添加到ListBox控件。
  • 从名称的列表框列表中选择一个名称后,将相关详细信息添加到此处的一些标签(名为 lblPhoneNumber lblAddress )。为了标识数组中的正确信息,我们这次使用 skipLines 值作为乘数。这样,即使您在名称列表中添加了更多详细信息,也可以找到仅修改skipLines值的正确信息。
    您需要订阅ListBox的SelectedIndexChanged事件:

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 operator将两个数字相除,然后返回操作的其余部分。如果没有提醒,则lineskipLines的倍数,即我们要跳过的行数。
If line Mod skipLines = 0 Then
(...)
End If

最后,当满足条件时,将字符串数组( people 数组)的内容添加到当前 line表示的索引处值,添加到ListBox.Items集合中:
ListBox1.Items.Add(people(line))