Array.Contains
문자열 배열 에서 메소드를 사용하고 있습니다. 대소 문자를 구분하지 않으려면 어떻게해야합니까?
답변
array.Contains("str", StringComparer.OrdinalIgnoreCase);
또는 특정 상황에 따라 다음을 선호 할 수 있습니다.
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
답변
내 쪽의 중요한 메모 또는 적어도 한 곳에서 분산 정보를 배치합니다. 위의 팁과 관련하여 다음과 같이 StringComparer를 사용합니다.
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
-
array.Contains()
LINQ 확장 방법이므로 .NET 3.5 이상에서만 표준으로 작동합니다.
using System;
using System.Linq;
-
그러나 .NET 2.0에서는
Contains()
캐스트를 사용하여 대소 문자를 구분하지 않고 간단한 방법을 사용할 수 있습니다.if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}Contains () 메서드는 IList 인터페이스의 일부이므로 배열뿐만 아니라 목록 등에서도 작동합니다.
답변
맞춤형 IEqualityComparer 구현대소 문자를 구분하지 않는 를 .
또한 이것을 확인 하십시오 . 따라서 (이론적으로) 당신이해야 할 일은 다음과 같습니다.
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
답변
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true