2013-07-10 7 views
56

Wie kann ich den folgenden Fall unempfindlich machen?Wie macht String.Contains die Groß-/Kleinschreibung aus?

myString1.Contains("AbC") 
+1

oder Duplikat von MSDN-Artikel für [String.Contains] (http: // msdn. microsoft.com/en-us/library/dy85x1sa.aspx) was darauf hindeutet "Siehe auch: IndexOf" ... –

+0

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

+0

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

Antwort

10
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 :)

+13

Diese Methode ist in Standard C nicht vorhanden # –

+1

Das ist der Grund für die Frage ... Danke @trippino – iGanja

+0

@trippino hat meine Antwort mit dem Extension Code bearbeitet – wudzik

39

Sie verwenden können:

mit einer beliebigen .NET-Version
if (myString1.IndexOf("AbC", StringComparison.OrdinalIgnoreCase) >=0) { 
    //... 
} 

Dies funktioniert .

+3

Zwei Tippfehler in deiner Antwort, sonst gut ;-) Es sollte (offensichtlich) 'StringComparison.OrdinalIgnoreCase' sein. – andreas

110

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); 
+2

Dies ist wohl die beste Antwort, wenn man es in eine Erweiterungsmethode einfügt. –

+6

@ Moo-Juice Ja, weil es vertraut ist :) http://Stackoverflow.com/a/444818/447156 –

+4

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 :) –

Verwandte Themen