2013-07-10 11 views
56

Jak mogę uczynić poniższą wielkość liter niewrażliwą?Jak ustawić String.Contains jest niewrażliwy na wielkość liter?

myString1.Contains("AbC") 
+1

lub duplikat artykule MSDN [String.Contains] (http: // MSDN. microsoft.com/en-us/library/dy85x1sa.aspx), które sugeruje "Zobacz także: IndexOf" ... –

+0

Cóż, to pytanie nie jest 100% -duplikowane, jeśli prosi o odpowiedzi w VB.Net, ponieważ VB .Net ma funkcje C#, które nie mają, tak jak operator 'LIKE' który może być tutaj użyty. – sloth

+0

Oznaczał oba języki, więc prawdopodobnie nie dba o to, który z nich jest rozwiązaniem, więc duplikat całkowicie odpowie na to pytanie. W każdym razie, jeśli edytuje swoje pytanie za pomocą onlt vb.net, automatycznie przejdzie do kolejki ponownego otwierania. – SysDragon

Odpowiedz

10
bool b = list.Contains("Hello", StringComparer.CurrentCultureIgnoreCase); 
kod

[EDIT] Rozszerzenie:

public static bool Contains(this string source, string cont 
                , StringComparison compare) 
{ 
    return source.IndexOf(cont, compare) >= 0; 
} 

To może pracować :)

+13

Ta metoda nie występuje w standardowym C# –

+1

To jest powód pytania ... Dzięki @trippino – iGanja

+0

@trippino zredagowałem swoją odpowiedź z kodem rozszerzenia – wudzik

39

Można użyć:

if (myString1.IndexOf("AbC", StringComparison.OrdinalIgnoreCase) >=0) { 
    //... 
} 

Działa z każdą wersją .NET .

+3

Dwa literówki w odpowiedzi, w przeciwnym razie dobre ;-) Powinno to być (oczywiście) "StringComparison.OrdinalIgnoreCase" – andreas

110

Można utworzyć własną metodę rozszerzenia, aby to zrobić:

public static bool Contains(this string source, string toCheck, StringComparison comp) 
    { 
    return source != null && toCheck != null && source.IndexOf(toCheck, comp) >= 0; 
    } 

a następnie zadzwonić:

mystring.Contains(myStringToCheck, StringComparison.OrdinalIgnoreCase); 
+2

Jest to prawdopodobnie najlepsza odpowiedź poprzez zawijanie jej w metodzie rozszerzenia. –

+6

@ Moo-Juice Tak, ponieważ jest znajomy :) http://stackoverflow.com/a/444818/447156 –

+4

Polecam wywołanie funkcji coś innego niż dokładne dopasowanie z czymś w ramach, takich jak inicjały + zawiera. Używam tego podejścia do mnóstwa rzeczy. Moje inicjały to PS, więc mam psContains, psStartsWith, psEndsWith, itd. Powodem, dla którego uważam, że powinien być inny, jest to, że możesz powiedzieć, po prostu czytając kod, co zamierza zrobić. Ponadto, jeśli sygnatury są zgodne, kompilator może tego nie lubić. Jeśli są wystarczająco kompatybilne, kompilacja nie pomoże ci dowiedzieć się, czy twoje rozszerzenia są w grze. Rozszerzenia to prawdziwy klejnot sieci Dotnet. Jeśli użyty poprawnie :) –

Powiązane problemy