[.net] Array.Contains를 문자열 배열에서 대소 문자를 구분하지 않게하려면 어떻게해야합니까?

Array.Contains문자열 배열 에서 메소드를 사용하고 있습니다. 대소 문자를 구분하지 않으려면 어떻게해야합니까?



답변

array.Contains("str", StringComparer.OrdinalIgnoreCase);

또는 특정 상황에 따라 다음을 선호 할 수 있습니다.

array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);


답변

내 쪽의 중요한 메모 또는 적어도 한 곳에서 분산 정보를 배치합니다. 위의 팁과 관련하여 다음과 같이 StringComparer를 사용합니다.

if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
  1. array.Contains() LINQ 확장 방법이므로 .NET 3.5 이상에서만 표준으로 작동합니다.
    using System;
    using System.Linq;

  2. 그러나 .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


답변