Ich möchte C # verwenden, um zu überprüfen, ob ein Zeichenfolgenwert ein Wort in einem Zeichenfolgenarray enthält. Zum Beispiel,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
Wie kann ich überprüfen, ob der Zeichenfolgenwert für 'stringToCheck' ein Wort im Array enthält?
Antworten:
Hier ist, wie Sie es tun können:
UPDATE: Vielleicht suchen Sie nach einer besseren Lösung. Lesen Sie die Antwort von @Anton Gogolev, in der LINQ verwendet wird.
quelle
Hier ist wie:
Dies prüft, ob
stringToCheck
eine der Teilzeichenfolgen von enthalten iststringArray
. Wenn Sie sicherstellen möchten, dass alle Teilzeichenfolgen enthalten sind, wechseln SieAny
zuAll
:quelle
stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)
Versuche dies:
LINQ muss nicht verwendet werden
quelle
stringArray.Any(w => stringToCheck.IndexOf(w) >= 0)
Die Linq-Antwort mit String.Contains ist jedoch sinnvoller, da genau danach gefragt wird.Verwenden Sie einfach die linq-Methode:
quelle
using System.Linq;
Einfachste und einfachste Art und Weise.
quelle
quelle
So etwas vielleicht:
quelle
String.Contains
könnte besser sein , alsString.IndexOf
wenn Sie Fall zu ignorieren, da Microsoft ein zwei Argument vergessenString.Contains
haben Sie Ihre eigenen schreiben. Bedenken Sie:Array.Exists(stringArray, s => stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1)
Die Verwendung von Linq und Methodengruppen wäre der schnellste und kompaktere Weg, dies zu tun.
quelle
Sie können Ihre eigenen
string.ContainsAny()
undstring.ContainsAll()
Methoden definieren. Als Bonus habe ich sogar einestring.Contains()
Methode eingeführt, die einen Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung usw. ermöglicht.Sie können diese mit folgendem Code testen:
quelle
Ich verwende Folgendes in einer Konsolenanwendung, um nach Argumenten zu suchen
quelle
Ich würde Linq verwenden, aber es kann immer noch getan werden durch:
quelle
Versuchen:
quelle
Sie können auch das Gleiche tun, wie Anton Gogolev vorschlägt, um zu überprüfen, ob ein Artikel in
stringArray1
mit einem Artikel in übereinstimmtstringArray2
:Ebenso stimmen alle Elemente in stringArray1 mit allen Elementen in stringArray2 überein:
quelle
quelle
Versuchen Sie dies, hier das Beispiel: Um zu überprüfen, ob das Feld eines der Wörter im Array enthält. Um zu überprüfen, ob das Feld (someField) eines der Wörter im Array enthält.
quelle
quelle
Ich habe eine ähnliche Methode wie IndexOf von Maitrey684 und die foreach-Schleife von Theomax verwendet, um dies zu erstellen. (Hinweis: Die ersten 3 "String" -Zeilen sind nur ein Beispiel dafür, wie Sie ein Array erstellen und in das richtige Format bringen können.)
Wenn Sie zwei Arrays vergleichen möchten, werden diese durch Semikolons getrennt, aber der letzte Wert hat keinen nach. Wenn Sie ein Semikolon an die Zeichenfolgenform des Arrays anhängen (dh a; b; c wird zu a; b; c;), können Sie mit "x;" egal in welcher Position es ist:
quelle
bFound wird auf true gesetzt, wenn die gesuchte Zeichenfolge mit einem Element des Arrays 'lines' übereinstimmt.
quelle
Versuche dies
Sie erhalten die Zeile mit dem ersten Vorkommen des gesuchten Textes zurück.
quelle
Wenn
stringArray
eine große Anzahl von Zeichenfolgen unterschiedlicher Länge enthalten ist, sollten Sie einen Trie zum Speichern und Durchsuchen des Zeichenfolgenarrays verwenden.Hier ist die Implementierung der
Trie
KlasseWenn alle Zeichenfolgen
stringArray
dieselbe Länge haben, ist es besser, wenn Sie nur aHashSet
anstelle von a verwendenTrie
quelle
Einfache Lösung, keine Linq erforderlich
String.Join (",", Array) .Contains (Wert + ",");
quelle
quelle
Versuchen Sie dies, keine Notwendigkeit für eine Schleife ..
quelle
Um die obigen Antworten zu vervollständigen , verwenden Sie für die IgnoreCase- Prüfung Folgendes :
quelle
In meinem Fall haben die obigen Antworten nicht funktioniert. Ich habe in einem Array nach einer Zeichenfolge gesucht und sie einem booleschen Wert zugewiesen. Ich veränderte Antwort des @Anton Gogolev und entfernt , um das
Any()
Verfahren und setzte die imstringToCheck
Innern desContains()
Verfahrens.quelle
Verwenden der Find- oder FindIndex- Methoden der Array- Klasse:
quelle
Ich habe den folgenden Code verwendet, um zu überprüfen, ob die Zeichenfolge eines der Elemente im Zeichenfolgenarray enthält:
quelle
Text = "matched"
so oft, wiestringToCheck
Teilzeichenfolgen von enthaltenstringArray
. Möglicherweise möchten Sie einbreak
oderreturn
nach der Zuweisung setzen.Drei Optionen demonstriert. Ich bevorzuge es, den dritten als den prägnantesten zu finden.
quelle