반응형
HashSet 사용 방법.Contains () 메서드의 대소 문자를 구분하지 않는 모드?
HashSet<string>.Contains()
대소 문자를 구분하지 않는 모드에서 방법을 사용하는 방법은 무엇입니까?
HashSet
사용자 지정 비교자를 사용하여 만들 수 있습니다 .
HashSet<string> hs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
hs.Add("Hello");
Console.WriteLine(hs.Contains("HeLLo"));
다음과 같은 권한으로 만들어야합니다 IEqualityComparer
.
HashSet<string> hashset = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
다른 답변에서 보여 주듯이 여기에서는 필요하지 않지만 문자열을 사용하지 않는 다른 경우에는를 구현하도록 IEqualityComparer<T>
선택한 다음 .Contains
오버로드를 사용할 수 있습니다 . 다음은 문자열을 사용하는 예입니다 (다시 말하지만 다른 답변에서는 요구 사항을 충족하는 사용할 수있는 문자열 비교기가 이미 있음을 보여주었습니다). 주변의 많은 메서드 IEnumerable<T>
에는 이러한 비교자를 허용하는 오버로드가 있으므로 구현 방법을 배우는 것이 좋습니다.
class CustomStringComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.Equals(y, StringComparison.InvariantCultureIgnoreCase);
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
그리고 그것을 사용하십시오
bool contains = hash.Contains("foo", new CustomStringComparer());
사용하고자 하는를 지정할 수 있는 생성자IEqualityComparer
를 사용해야합니다.
HashSet<String> hashSet = new HashSet<String>(StringComparer.InvariantCultureIgnoreCase);
StringComparer의 객체는 정적 속성과 같은 일부 자주 사용되는 비교자를 제공합니다.
반응형
'Programing' 카테고리의 다른 글
C 콘솔에 바이너리 트리를 "그리는"방법 (0) | 2020.11.11 |
---|---|
키워드가 지원되지 않는 데이터 소스 (0) | 2020.11.11 |
자바 스크립트에서 바이트 배열을 문자열로 변환 (0) | 2020.11.11 |
응용 프로그램 대 세션 대 캐시 (0) | 2020.11.11 |
Git http-안전하게 자격 증명 기억 (0) | 2020.11.11 |