2016-08-06 12 views
-2

Ich habe C# -Programm, in dem ich überprüfen muss, ob eine Zeichenfolge in einer Liste von Zeichenfolgen übereinstimmt.If() -Anweisung an alle in einer Liste von Zeichenfolgen

Derzeit meine Methode ist:

if (Regex.Matches(data, @"String1").Count > 0 || Regex.Matches(data, @"String2").Count > 0 || Regex.Matches(data, @"String3").Count > 0){ 
    /*Code...*/ 
} 

So ist der Punkt, um zu sehen, ob „Daten“ eine der Saiten entspricht.

Das Programm erfordert, dass ich eine ziemlich lange Liste von möglichen Zeichenfolgen behalte und die Liste hin und wieder aktualisiere, so dass dieses System ziemlich ineffizient ist. Was wäre ein besserer Weg?

+3

Fragen Sie, ob ein regulärer Ausdruck hier wirklich die richtige Lösung ist:

string[] toFind = new string[] {@"String1", @"String2"}; if (toFind.Any(item => data.Contains(item))) { /*Code...*/ } 

Wenn Sie Verwendung reguläre Ausdrücke haben . Fragen Sie sich dann, wie Sie einzelne Elemente gruppieren und eine Operation für jedes Element in dieser Gruppierung ausführen können. Eine Sammlung von Gegenständen, wenn Sie so wollen. –

Antwort

3

Versuchen Linq: selbst

string[] patterns = new string[] {@"String1", @"String2"}; 

    if (patterns.Any(item => Regex.IsMatch(data, item)) { 
    /*Code...*/ 
    }