我有一个 txt 文本文件,其中有几行如下:
SW1:bla bla bla
SW2:yada yada yada
SW3:yak yak yak
我希望 vb net 查找行 SW1: 并将任何前面的内容放在 textbox1 中,就像明智的 sw2: 在 textbox2 中和 SW3: 在 textbox 3 中一样:
所有剩余的行都进入富文本框1
是否可以使用 vb.net 搜索关键字并将前面的文本发送到特定的文本框?
您可以使用eeFile.ReadAllLines
将整个文件加载到字符串数组中(文件中每行一个项目)。然后,您可以使用String.StartsWith
andString.SubString
方法来解析每一行,例如:
For Each line As String In File.ReadAllLines(filePath)
If line.StartsWith("SW1:") Then
TextBox1.Text = line.SubString(4)
End If
'...
Next
或者,如果所有关键字的长度相同,则可以使用选择案例:
For Each line As String In File.ReadAllLines(filePath)
Select Case line.SubString(0, 4)
Case "SW1:"
TextBox1.Text = line.SubString(4)
' ...
End Select
Next
或者,如果所有关键字都以冒号结尾,并且没有一个值包含该字符,则可以使用String.Split
从每一行拆分键/值对:
For Each line As String In File.ReadAllLines(filePath)
Dim parts() As String = line.Split(":"c)
Select Case parts(0)
Case "SW1"
TextBox1.Text = parts(1)
' ...
End Select
Next
要将文件的其余部分读入富文本框中,有多种方法可以做到这一点,但最简单的方法之一是:
Dim builder As New StringBuilder()
For Each line As String In File.ReadAllLines(filePath)
If line.StartsWith("SW1:") Then
TextBox1.Text = line.SubString(4)
Else If line.StartsWith("SW2:") Then
TextBox2.Text = line.SubString(4)
Else If line.StartsWith("SW3:") Then
TextBox3.Text = line.SubString(4)
Else
builder.AppendLine(line)
End If
Next
RichTextBox1.Text = builder.ToString()
既然史蒂文先生已经得到了答案。也可以这样使用,。
Dim source = File.ReadAllLines("d:\source.txt")
sw1TextBox.Text = source.Where(Function(c) c.StartsWith("SW1:")).FirstOrDefault().Substring(4)
sw2TextBox.Text = source.Where(Function(c) c.StartsWith("SW2:")).FirstOrDefault().Substring(4)
sw3TextBox.Text = source.Where(Function(c) c.StartsWith("SW3:")).FirstOrDefault().Substring(4)