Получить номер строки, которая содержит строку - PullRequest
0 голосов
/ 30 марта 2012

Как получить номер строки, которая содержит указанную строку в текстовом файле?

Пример текстового файла содержит:

Красный
Белый
Желтый
Зеленый

Как получить "Желтый" номер строки?и могу ли я написать строку в указанной строке, скажем, я хочу написать строку в строке 2?

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Чтобы найти строку в текстовом файле, вам нужно прочитать строки от начала файла до тех пор, пока не найдете его:

string fileName = "file.txt";
string someString = "Yellow";

string[] lines = File.ReadAllLines(fileName);
int found = -1;
for (int i = 0; i < lines.Length; i++) {
  if (lines[i].Contains(someString)) {
    found = i;
    break;
  }
}

Если вы хотите изменить строку в файле, выдолжен прочитать весь файл и записать его обратно с измененной строкой:

string[] lines = File.ReadAllLines(fileName);
lines[1] = "Black";
File.WriteAllLines(fileName, lines);
1 голос
/ 30 марта 2012
Dim toSearch = "Yellow"
Dim lineNumber = File.ReadLines(filePath).
                 Where(Function(l) l.Contains(toSearch)).
                 Select(Function(l, index) index)

If lineNumber.Any Then 
    Dim firstNumber = lineNumber.First
End If

Редактировать : Если вы хотите написать строку в этой строке, лучшим способом было бы заменить эту строку новой. В следующем примере я заменяю все вхождения "Yellow" на "Yellow Submarine"

Dim replaceString = "Yellow Submarine"
Dim newFileLines = File.ReadLines(filePath).
                   Where(Function(l) l.Contains(toSearch)).
                   Select(Function(l) l.Replace(toSearch, replaceString))
File.WriteAllLines(path, newFileLines)

Или вы хотите заменить конкретную строку:

Dim allLines = File.ReadAllLines(path)
allLines(lineNumber) = replaceString 
File.WriteAllLines(path, allLines)
0 голосов
/ 08 марта 2014
Imports System.IO

Dim int1 As Integer
Dim path As String = "file.txt"
Dim reader As StreamReader

Public Sub find()
    int1 = New Integer
    reader = File.OpenText(path)
    Dim someString As String = Form1.TextBox1.Text 'this Textbox for searching text example : Yellow
    Dim lines() As String = File.ReadAllLines(path)
    Dim found As Integer = -1
    Dim i As Integer
    For i = 0 To lines.Length - 1 Step i + 1
        If lines(i).Contains(someString) Then
            found = i
            int1 = i
            Exit For
        End If
    Next
    reader = File.OpenText(path)

    'if you want find same word then

    Dim lines2() As String = File.ReadAllLines(path)
    Form1.ListBox1.Items.Add(lines2(int1))
    int1 = New Integer
End Sub
...