2012-05-30 137 views
-1

我有一些编码,如果文本框的值与文本文件中每行的第一个值相匹配,就会显示一个标签。文本文件中的搜索字段

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,则标签是可见的。

+0

什么你所期望的? –

+0

“1”后面应该出现什么?每行的字段之间的分隔符是什么?号码后有空格吗?有没有标签? –

+0

蒂姆我不希望标签出现,除非文本框有“11”,“15”或“18”不是“1”,史蒂夫没有标签或分隔符只是一个换行符。 – JackSparrow

回答

1

试试这个:

Label1.Visible = IO.File.ReadAllLines("Path.txt").Any(Function(f) f = TextBox1.Text) 
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,使其工作。

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

0

如果你想在标签可见,当线路中的至少一个与在TextBox文本开始,你可以使用LINQ和Enumerable.Any

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

尝试更改以下行,假设你是从文本文件阅读和寻找整条生产线的精确匹配,你可以试试这个:

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

这应该检查以确保其唯一在该行,因为它现在正在寻找一个新的生产线和将不匹配'11'