Odpowiedzi:
array.Contains("str", StringComparer.OrdinalIgnoreCase);
Lub, w zależności od konkretnych okoliczności, możesz preferować:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
InvariantCulture. Użycie którejkolwiek z trzech powyższych opcji zależy od okoliczności. Nie sprzeciwiam się zmianie kolejności, ale usuwam komentarz „prawdopodobnie nie”. W odpowiedzi jest już jasne, że powinieneś wybrać ten, który działa dla Ciebie w obecnej sytuacji.
Kilka ważnych uwag z mojej strony lub przynajmniej umieszczenie w jednym miejscu niektórych informacji dystrybuowanych - dotyczących powyższej wskazówki z StringComparer, jak w:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains() jest metodą rozszerzenia LINQ i dlatego działa standardowo tylko z .NET 3.5 lub nowszym, wymagając:
using System;
using System.Linq;
Ale: w .NET 2.0 prosta Contains()metoda (bez uwzględniania wielkości liter) jest przynajmniej możliwa w następujący sposób, z rzutowaniem:
if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}
Ponieważ metoda Contains () jest częścią interfejsu IList, działa to nie tylko z tablicami, ale także z listami itp.
Zaimplementuj niestandardowy IEqualityComparer, który bierze pod uwagę niewrażliwość na wielkość liter.
Dodatkowo sprawdź to . Zatem (w teorii) wszystko, co musisz zrobić, to:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
CurrentCulture), powinieneś użyćOrdinalzamiastInvariantCulture.