Wie kann ich den folgenden Fall unempfindlich machen?Wie macht String.Contains die Groß-/Kleinschreibung aus?
myString1.Contains("AbC")
Wie kann ich den folgenden Fall unempfindlich machen?Wie macht String.Contains die Groß-/Kleinschreibung aus?
myString1.Contains("AbC")
bool b = list.Contains("Hello", StringComparer.CurrentCultureIgnoreCase);
[EDIT] Erweiterungscode:
public static bool Contains(this string source, string cont
, StringComparison compare)
{
return source.IndexOf(cont, compare) >= 0;
}
Diese Arbeit könnte :)
Sie verwenden können:
mit einer beliebigen .NET-Versionif (myString1.IndexOf("AbC", StringComparison.OrdinalIgnoreCase) >=0) {
//...
}
Dies funktioniert .
Zwei Tippfehler in deiner Antwort, sonst gut ;-) Es sollte (offensichtlich) 'StringComparison.OrdinalIgnoreCase' sein. – andreas
Sie können Ihre eigene Erweiterungsmethode erstellen, dies zu tun:
public static bool Contains(this string source, string toCheck, StringComparison comp)
{
return source != null && toCheck != null && source.IndexOf(toCheck, comp) >= 0;
}
Und dann rufen:
mystring.Contains(myStringToCheck, StringComparison.OrdinalIgnoreCase);
Dies ist wohl die beste Antwort, wenn man es in eine Erweiterungsmethode einfügt. –
@ Moo-Juice Ja, weil es vertraut ist :) http://Stackoverflow.com/a/444818/447156 –
Ich würde empfehlen, die Funktion etwas anderes als eine genaue Übereinstimmung mit etwas im Rahmen wie Ihre Initialen + Enthält aufrufen. Ich benutze diesen Ansatz für eine Menge Dinge. Meine Initialen sind PS, also habe ich psContains, psStartsWith, psEndsWith, usw. Der Grund, warum ich denke, dass es anders sein sollte, ist, dass Sie einfach durch das Lesen des Codes sagen können, was es tun wird. Wenn die Signaturen kompatibel sind, mag der Compiler das nicht. Wenn sie kompatibel genug sind, würde das Kompilieren nicht helfen, herauszufinden, ob Ihre Erweiterungen im Spiel sind. Erweiterungen sind ein echtes Juwel von Dotnet. Wenn richtig benutzt :) –
oder Duplikat von MSDN-Artikel für [String.Contains] (http: // msdn. microsoft.com/en-us/library/dy85x1sa.aspx) was darauf hindeutet "Siehe auch: IndexOf" ... –
Nun, diese Frage ist kein 100% -duplicate, wenn sie in VB.Net seit VB nach Antworten fragt .Net hat Funktionen, die C# nicht hat, wie der Operator 'LIKE', der hier verwendet werden kann. – sloth
Er markiert beide Sprachen, also ist es ihm wahrscheinlich egal, welche die Lösung ist, so dass das Duplikat diese Frage vollständig beantwortet. Wie auch immer, wenn er seine Frage mit onlt vb.net bearbeitet, wird er automatisch in die Warteschlange für das erneute Öffnen eintreten. – SysDragon