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.
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.
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.
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!
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.