2012-03-30 5 views
0

Wie erhält man eine Zeilennummer, die eine angegebene Zeichenfolge in einer Textdatei enthält?Ruft die Zeilennummer ab, die eine Zeichenfolge enthält

Beispiel Textdatei enthält:

Red
Weiß
Gelb
Grün

Wie kommt man "Yellow" Zeilennummer? Und kann ich eine Zeichenfolge in eine angegebene Zeile schreiben, sagen wir, ich möchte eine Zeichenfolge in Zeile 2 schreiben?

Antwort

1

Um eine Zeile in einer Textdatei zu finden , müssen Sie die Zeilen aus dem Anfang der Datei lesen, bis Sie finden es:

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; 
    } 
} 

Wenn Sie eine Zeile in einer Datei ändern möchten, können Sie die gesamte Datei lesen und es wieder mit dem geänderten schreiben Linie:

string[] lines = File.ReadAllLines(fileName); 
lines[1] = "Black"; 
File.WriteAllLines(fileName, lines); 
+0

Vielen Dank, das hat gut funktioniert. – NetInfo

1
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 

bearbeiten: Wenn Sie eine Zeichenfolge in dieser Zeile schreiben wollen, wäre der beste Weg, diese Linie mit dem neuen zu ersetzen sein. Im folgende Beispiel bin ersetzt i alle Vorkommen von „Gelb“ mit „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) 

Oder wollen Sie eine bestimmte Zeile ersetzen:

Dim allLines = File.ReadAllLines(path) 
allLines(lineNumber) = replaceString 
File.WriteAllLines(path, allLines) 
+1

Danke für all diese Beispiele, aber ich nur die Spitze eines benötigt, die ganz gleich einen Fehler zurückgegeben, wie ich es wollte. – NetInfo

0
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