C # Überprüfen Sie, ob die Zeichenfolge Übereinstimmungen in einem Zeichenfolgenarray enthält

8

Was wäre der schnellste Weg zu überprüfen, ob eine Zeichenfolge in einem Zeichenfolgenarray in C # Übereinstimmungen enthält? Ich kann es mit einer Schleife machen, aber ich denke, das wäre zu langsam.

    
rayanisran 16.11.2010, 04:00
quelle

5 Antworten

4

Sie könnten die Zeichenfolgen mit Regex oder Anweisungen kombinieren und dann "in einem Durchgang" machen, aber technisch würde die Regex immer noch intern eine Schleife ausführen. Letztendlich ist eine Schleife notwendig.

    
Brent Arias 16.11.2010, 04:02
quelle
19

LINQ verwenden:

%Vor%

Zugegeben, vielleicht möchten Sie Kultur und Fall berücksichtigen, aber das ist die allgemeine Idee. Wenn Gleichheit nicht mit "Übereinstimmungen" gemeint ist, können Sie immer die Funktion verwenden, die Sie für "Übereinstimmung" verwenden müssen.

    
Esteban Araya 16.11.2010 04:07
quelle
7

Ich kann Ihnen wirklich nicht sagen, ob das der absolut schnellste Weg ist, aber eine der Möglichkeiten, die ich normalerweise gemacht habe, ist:

Dies wird prüfen, ob die Zeichenfolge eine der Zeichenfolgen aus dem Array enthält:

%Vor%

Um zu überprüfen, ob die Zeichenfolge alle Zeichenfolgen (Elemente) des Arrays enthält, ändern Sie einfach myStrings.Any in der if-Anweisung in myStrings.All .

Ich weiß nicht, welche Art von Anwendung das ist, aber ich muss oft verwenden:

%Vor%

Wenn Sie also prüfen, ob Benutzereingaben angezeigt werden, spielt es keine Rolle, ob der Benutzer die Zeichenfolge in GROSSBUCHSTABEN eingibt, dies könnte leicht mit ToLowerInvariant () umgekehrt werden.

Hoffe das hat geholfen!

    
SomeRandomProgrammer 27.05.2013 04:32
quelle
5

Das funktioniert gut für mich:

%Vor%     
David 25.02.2015 15:27
quelle
1

Wenn sich das "Array" niemals ändert (oder nur selten wechselt) und Sie viele Eingabestrings haben, die Sie testen, können Sie ein HashSet<string> aus dem Array erstellen. HashSet<T>.Contains ist eine O (1) -Operation, im Gegensatz zu einer Schleife, die O (N) ist.

Aber es würde einige (kleine) Zeit brauchen, um das HashSet zu erstellen. Wenn sich das Array häufig ändert, ist eine Schleife der einzig realistische Weg.

    
Joe White 16.11.2010 04:09
quelle

Tags und Links