2011-09-23 3 views
2

J'ai une chaîne qui contient la sortie suivanteComment rechercher un motif dans une chaîne?

login;windows 
db;sql 
audit;failure 

comment puis-je vérifier si cette chaîne contient le mot « audit; échec »?

j'utiliser le code suivant, mais sans succès:

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"!); 
} 

je dois chercher dans la variable case1 et non la chaîne currLine thaks à l'avance! : D

+0

avez-vous essayé [string.Contains] (http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx)? – Reniuz

Répondre

3

Aussi assurez-vous que vous supprimez la ligne string case1 = "";

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

oups c'est fait! Merci! –

+0

@ user866800 voir la modification – Kimtho6

0

Je pense que vous avez juste besoin d'ajuster la chaîne de affaire1 ........

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

Utilisez simplement String.Contains(), utiliser un code comme suit

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

} 
0

Une façon de le faire serait de diviser ce premier en li nda

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

Ceci retournera tout ce qui se cache derrière "audit" et est facilement adaptable pour renvoyer tout ce dont vous avez besoin. Le retour final sera déclenché si aucune ligne d'audit n'était présente.

Questions connexes