2012-05-30 180 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'