2011-09-23 64 views
2

我有一個包含以下輸出如何搜索字符串中的模式?

login;windows 
db;sql 
audit;failure 

我如何檢查,如果此字符串包含單詞串「審計;失敗」?

我使用下面的代碼,但沒有成功:

currLine = sr.ReadToEnd(); 
string[] splited = Regex.Split(currLine, "~~~~~~~~~~~~~~"); 
case1 = splited[0]; 
string case1 = ""; 
string pattern1 = "audit;failure"; 
if (Regex.IsMatch(case1, pattern1)){ 
console.writeline("success"!); 
} 

我必須提前通過可變case1而不是字符串currLine thaks搜索! :d

+0

你試過[string.Contains](http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx)嗎? – Reniuz

回答

3

另外,還要確保你刪除線string case1 = "";

if(case1.Contains("audit;failure")) 
    console.writeline("success"!); 
+0

哎呀!謝謝! –

+0

@ user866800請參閱編輯 – Kimtho6

0

我想你只需要調整情況1串........

string case1 = ""; 
currLine = sr.ReadToEnd(); 
string[] splited = Regex.Split(currLine, "~~~~~~~~~~~~~~"); 
case1 = splited[0]; 
string pattern1 = "audit;failure"; 
if (Regex.IsMatch(case1, pattern1)){ 
console.writeline("success"!); 
} 
0

只需使用String.Contains(),使用類似的代碼如下

if(sr.Contains("audit;failure") 
{ 

} 
0

一種方式做到這一點是首先分成李本網元。

string[] lines = sr.split (new string[]{ Environment.LineBreak}); 
foreach(string line in lines){ 
    string[] parts = line.split(new char[] {';'}); 
    if(parts[0] == "audit") 
     return parts[1]; 
} 
return "not set"; 

這將返回任何站在「審計」後面,很容易適應返回任何你需要的東西。如果不存在審計線,最終回報將被觸發。