2017-02-14 9 views
-1

Ich habe die Datei wie untenWie man bestimmte Zeilen von der Textdatei in C# abholt?

aaaaaaa 
    ID 12345 
    David 
    bbbbbbbbbbb 

gezeigt ich die Id und Name der Person zu trennen haben

Meine Ausgabe wie

12345 
David 
sein sollte

Könnte jemand bitte helfen? Danke im Voraus.

+1

Ist das Format der Datei dokumentiert? Gibt es mehrere Daten in der Datei? Was bedeutet "aaaaaa" und "bbbbb"? – Dai

+0

wird der Name und die Nummer jedes Mal den gleichen Ort haben? – Pavvy

+0

@Dai ja es gibt mehrere Zeilen in der Datei, ich erwähnte aaa und bbb anstelle von verschiedenen Zeilen in der Datei – Bhargav

Antwort

1

folgenden Code werden Sie für dieses spezielle Problem helfen, versuchen Sie dies und lassen Sie mich wissen, wenn Sie irgendwelche Schwierigkeiten konfrontiert sind:

var linesInFile = System.IO.File.ReadAllLines(@"C:\Users\Vishnuraj\Desktop\sample.txt").ToList(); 

var lineOfID = linesInFile.FirstOrDefault(x => x.ToLower().StartsWith("id")); 
if (!String.IsNullOrEmpty(lineOfID)) 
{ 
    int indexOfID = linesInFile.IndexOf(lineOfID); 
    if (indexOfID < linesInFile.Count - 1) 
    { 
     string nameOfPerson = linesInFile[indexOfID + 1]; // will be "David" 
     string personId = lineOfID.Substring(3); // will be 12345 
    } 
} 
+0

Danke für die Hilfe – Bhargav

+0

@Bhargav: Freut mich zu hören. Gerne, dir zu helfen .......... –

0

Sie können Ihre ID und Name wie folgt holen:

 string[]file= File.ReadAllLines(filePath); //Read your text file this way. 
     int id = 1; //first id will be found at index 1 as mentioned by you. 
     for (int i = 0; i < file.Length; i++) 
     { 
      if (i == id) 
      { 
       //here is your id & Name 
       Console.WriteLine(file[i]); 
       if (file[id + 1] != null)//checking whether next index if null or not. 
        Console.WriteLine(file[id + 1]); 
       id += 4;//incremented as you said, it always be there in a sequence 
      } 
     } 

Sie können diesen Code weiter verfeinern, wie das Array in ein List konvertieren und LINQ usw. anwenden ...

0

Wenn Sie NuGet "System.Interact ive "dann können Sie dies tun:

var lines = 
    File 
     .ReadLines(fileName) 
     .Skip(1) 
     .Take(2) 
     .SelectMany(x => x.Split(' ').TakeLast(1)) 
     .ToArray(); 

var id = lines[0]; 
var name = lines[1]; 
Verwandte Themen