文本文件中的搜索字段

时间:2012-05-30 18:59:14

标签: vb.net vb.net-2010

如果文本框的值与文本文件中每行的任何第一个值匹配,我会有一些显示标签的编码。

Dim sList As New List(Of String)(IO.File.ReadAllLines("Path"))
    Dim i As Integer
    For i = 0 To sList.Count - 1
        If sList(i).StartsWith(textbox1.Text) Then
            Label1.Visible = True
            Exit For
        Else
            Label1.Visible = False
        End If
    Next

问题是如果文本框有1并且文本文件有11它会显示标签,那么最好的方法是什么?

我已经尝试了sList(i).Contains等,但没有一个人在做这项工作。

我在这里尝试了所有的建议,没有任何效果,我的文本文件有如下的数字

11
15
18

例如,如果我在文本框中输入数字1,则标签可见。

4 个答案:

答案 0 :(得分:1)

试试这个:

Label1.Visible = IO.File.ReadAllLines("Path.txt").Any(Function(f) f = TextBox1.Text)

答案 1 :(得分:0)

我认为LINQ可以在这里使用:

Dim text = textbox1.Text
Dim textWithSpace = String.Format("{0} ", text)

Label1.Visible = IO.File.ReadAllLines("Path").Any(Function(line) line.StartsWith(textWithSpace) OrElse line = text)

您需要导入System.Linq才能使其正常运行。

我假设空格结束文件中的每个单词。

答案 2 :(得分:0)

如果您希望在至少有一行以TextBox中的文字开头时可见标签,您可以使用LINQ和Enumerable.Any

Dim matchingLines = From l In IO.File.ReadLines("Path")
                    Where l.StartsWith(textbox1.Text)
Label1.Visible = matchingLines.Any()

答案 3 :(得分:0)

尝试更改以下行,假设您正在读取文本文件并查找整行的完全匹配,您可以尝试这样做:

If sList(i).StartsWith(textbox1.Text + Environment.NewLine) Then

那应该检查以确保它是唯一的东西,因为它现在正在寻找一个新的行,并且不匹配'11'