2015-01-16 2 views
0

Попытка линейного поиска файла, чтобы найти строку, которая начинается с имени пользователя (и «,», так как он уверен, что это все имя пользователя) в файле, отформатированном как « ,,, "для каждой линии.Найти строку, содержащую определенную строку в файле

Я не уверен, как это сделать, чтобы любая помощь была оценена.

Dim lineCorrect As String = "" 
    Using reader As New System.IO.StreamReader("Pass.txt") 
     While Not reader.EndOfStream 
      If reader.ReadLine.StartsWith(tbUsernameLogIn.Text & ",") = True Then 
       lineCorrect = reader.ReadLine 
      Else 
       reader.ReadLine() 
      End If 
     End While 
    End Using 
    If lineCorrect = "" Then 
     Debug.WriteLine("Incorrect Login 1") 
    Else 
     'do something' 
    End If 
+0

Насколько велик этот файл? Не могли бы вы загрузить весь файл в память? – Steve

+0

@Steve В настоящее время он содержит 10 пользователей, но он может пройти до 80 – RedLaser

ответ

3

Это простой подход с использованием File.ReadLines метода

Dim lineCorrect As String = "" 
Dim userLine = tbUsernameLogIn.Text & "," 
for Each line in File.ReadLines("Pass.txt") 
    If line.StartsWith(userLine) Then 
     lineCorrect = line 
     Exit For 
    End If 
Next 
If lineCorrect = "" Then 
    Debug.WriteLine("Incorrect Login 1") 
Else 
    'do something' 
End If 

Это позволяет перечислить все строки в файле и выйти из для каждый цикл при первом вхождении в строку поиска. Также обратите внимание на микро-оптимизацию. Сохраните строение строки, чтобы проверить вне цикла (хотя, вероятно, компилятор оптимизирует это сам)

+0

Это работает, спасибо большое – RedLaser

2

попробовать что-то вроде этого:

Dim lineCorrect As String 
lineCorrect = File.ReadLines("Pass.txt") _ 
    .FirstOrDefault(Function(str) str.StartsWith(tbUsernameLogIn.Text & ","))