1

我正在尝试读取文本文件的所有行并将仅 2 个特定行导出到 DataGridView。我的大部分代码都在工作,但是我遇到了一个问题,即数据并不总是在同一行。

我正在使用 VB.net 这是我正在使用的代码。

Dim lines() As String = File.ReadAllLines(textfile)
For i As Integer = 0 To lines.Length - 1
    If lines(i).Contains("First*") Then
         Dim Array1() As String = lines(i).Split("*")
         Dim Array2() As String = lines(i + 1).Split("*")
         DataGridView1.Rows.Add(Array1(1), Array2(1))
    End If
Next

我需要做这样的事情,但我不知道怎么做。

Dim lines() As String = File.ReadAllLines("C:\People.txt")
For i As Integer = 0 To lines.Length - 1
    If lines(i).Contains("First*") Then
         Dim Array1() As String = lines(i).Split("*")
    End If
    If lines(i).Contains("Last*") Then
         Dim Array2() As String = lines(i).Split("*")
    End If
    DataGridView1.Rows.Add(Array1(1), Array2(1))
Next

我的 DataGridView 包含两列(名字、姓氏)。所以我正在做的是读取所有行,当它遇到以“First *”开头的行时,它会收集名字,通常在该行下方是姓氏。我发现姓氏并不总是在它的正下方,所以我还需要搜索包含“Last*”的行并将两者都添加到 DataGridView。我试图将每个人的名字和姓氏放入 DataGridView。

这是文本文件的外观示例。

First*Bob
Last*Dole
Address*12 Way
Zip*00000
First*John
Middle*M
Last*Smith
Address*13 Way
Zip*00000

你可以在第二个人身上看到我会得到错误的信息。感谢任何帮助。

这是我正在寻找的 DataGridView 结果。

FirstName | LastName
----------------------
Bob       | Dole
John      | Smith
4

1 回答 1

1

您应该只从 If-Block 内部添加行以进行“姓氏”检查,并且您还需要从比示例中更高的范围存储名字变量。

此代码不执行错误检查:

Dim firstName As String = String.Empty
Dim lastName As String = String.Empty
For Each s As String In File.ReadAllLines("C:\People.txt")
  If s.Contains("First*") Then
    firstName = s.Split("*")(1)
  End If
  If s.Contains("Last*") Then
    lastName = s.Split("*")(1)
    dgv.Rows.Add(firstName, lastName)
  End If
Next
于 2019-10-08T20:00:57.393 回答