搜索关键字将前面的文本发送到特定的文本框vb.net

搜索关键字将前面的文本发送到特定的文本框vb.net,vb.net,textbox,Vb.net,Textbox,我有一个txt文本文件,其中有几行内容如下: SW1:bla bla bla SW2:yada yada yada SW3:yak yak yak 我希望vb net查找行SW1:并将任何前序放在textbox1中 与文本框2中的wise sw2和文本框3中的SW3类似: 所有剩余的行都位于rich textbox1中 是否可以使用vb.net搜索关键字并将前面的文本发送到特定的文本框?您可以使用eFile.ReadAllLines将整个文件加载到字符串数组中(文件中每行一项)。然后,您可以使

我有一个txt文本文件,其中有几行内容如下:

SW1:bla bla bla
SW2:yada yada yada
SW3:yak yak yak
我希望vb net查找行SW1:并将任何前序放在textbox1中 与文本框2中的wise sw2和文本框3中的SW3类似:

所有剩余的行都位于rich textbox1中


是否可以使用vb.net搜索关键字并将前面的文本发送到特定的文本框?

您可以使用e
File.ReadAllLines
将整个文件加载到字符串数组中(文件中每行一项)。然后,您可以使用
String.StartsWith
String.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)

第一个选项就像一个符咒,没想到它会这么简单和有效哇!但有一个问题仍然存在,我如何将文件的其余部分读入一个富文本框(除了SW1:SW2:和SW3:行之外,其余的都是这些行?我必须在明天下午2点测试它,现在是啤酒时间;)它确实可以工作,但每次都会重新加载整个文件,并多次在数组中重新循环,所以这不是最有效的方法。我会再次尝试另一种解决方案。
:D
@Stevendogart,现在怎么样,先生?+1那当然好得多。它仍然会在数组中搜索三次,但只要文件没有太多行,我相信这是可以接受的。