2016-06-09 76 views
0

我有一個包含一個文本文件:尋找一個文本文件C#相似串

內存測試

測試結果:通過

視頻測試

測試結果:通過

音頻測試

測試結果:失敗

我需要返回「真」,如果所有的測試結果都合格,如果一個或多個測試結果是失敗「假」。

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

謝謝。

+1

'var isValid = filecontents.Any(line =>(line.StartsWith(「Test Results」)&& line.EndsWith(「Fail」))' – TryingToImprove

回答

1

這聽起來像你真的只是尋找「失敗」的存在吧?

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

「系統故障測試,測試結果:通過」 )? – vojta

+0

@vojta我根據OP發佈的樣本文本文檔回答了這個問題。如果「系統故障測試」是一個測試用例,那麼OP將只需使用.Contains(「測試結果:失敗」) – Ju66ernaut

4

你已經知道了,

....

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

return true; 
2

無需將整個文件讀入內存在一次:

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

return !oneOrMoreTestsFailed; 

這讀取文件逐行。它遇到第一次故障時也會退出。所以它不一定要讀整個文件。