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

时间:2013-01-28 15:26:45

标签: vb.net textbox

我有一个txt文本文件,我有几行如下:

SW1:bla bla bla
SW2:yada yada yada
SW3:yak yak yak

我希望vb net能够找到SW1行:并在textbox1中放置任何前面的内容 喜欢明智的sw2:在textbox2中,以及SW3:在文本框3中:

所有剩余的行都进入富文本框

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

史蒂文先生已经得到了答案。你也可以像这样使用。

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)