2016-06-09 8 views
0

ich eine Textdatei, die enthält:Suchen Sie nach ähnlichen Zeichenketten in einer Textdatei C#

Memory Test

Testergebnisse: Pass

Video-Test

Testergebnisse : Pass

Audiotest

Testergebnisse: Fehler

Ich brauche ‚true‘ zurück, wenn alle Testergebnisse sind Pass und ‚falsch‘, wenn ein oder mehr Testergebnisse ausfallen.

List<string> filecontents = File.ReadAllLines("abc.txt").ToList<string(); 
    //If all "Test results : Pass" 
    { 
     return true; 
    } 
    for (int i = 0; i < filecontents.Count; i++) 
    { 
     if (filecontents[i].Contains("Test Results : Fail")) 
     {       
      return false; 
     } 
    } 

Vielen Dank.

+1

'var isValid = Dateiinhalt.Any (Zeile => (line.StartsWith (" Testergebnisse ") && line.Endswith (" Fail "))' – TryingToImprove

Antwort

1

Es klingt wie du bist wirklich nur auf der Suche nach der Anwesenheit von "Fail" oder?

string text = File.ReadAllText("myText.txt"); 
    if (text.Contains("Fail")) 
     return false; 
+0

Was ist mit "Systemfehler Test, Testergebnis: Bestanden": -) – vojta

+0

@vojta Ich basierte meine Antwort darauf, was das OP als sein Beispieltextdokument bekanntgab. Wenn "System Failure Test" ein Testfall war, musste das OP nur .Contains verwenden ("Test Results: Fail") – Ju66ernaut

4

Sie schon hast es,

....

for (int i = 0; i < filecontents.Count; i++) 
{ 
    if (filecontents[i].Contains("Test Results : Fail")) 
    {       
     return false; 
    } 
} 

return true; 
2

Keine Notwendigkeit, auf einmal die gesamte Datei in den Speicher zu lesen:

var oneOrMoreTestsFailed = 
    File.ReadLines(filename) 
    .Any(x => x.Contains("Test Results : Fail")); 

return !oneOrMoreTestsFailed; 

Dieser liest die Datei Zeile für Zeile. Es wird auch beendet, wenn der erste Fehler auftritt. Es muss also nicht unbedingt die gesamte Datei lesen.

Verwandte Themen