2012-05-30 3 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) .Контейнеры и т. Д., Но никто из них не выполняет эту работу.

Я перепробовал все предложения здесь и ничего не работает, мой текстовый файл имеет номер, как в следующем

11 
15 
18 

и, например, если у меня есть номер 1 в текстовом поле, то метка видна.

+0

Что бы вы ожидали? –

+0

Что должно получиться после «1»? Что такое разделитель между полями в каждой строке? Есть ли пробел после номера? Есть ли вкладка? –

+0

tim i не ожидал появления метки, если текстовое поле не было «11», «15» или «18», а не «1», Steve нет вкладки или разделителя, это просто новая строка. – 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»

Смежные вопросы