모든 문화권에서 작동하는 대소 문자를 무시하고 두자를 비교하는 올바른 방법이 궁금합니다. 또한, 대소 문자를 무시하지 않고 두 문자를 테스트하는 가장 좋은 방법은 Comparer<char>.Default
입니까? 사로 게이트 쌍에 대해이 작업이 가능합니까?대소 문자 무시 대소 문자를 비교하는 올바른 방법은 무엇입니까?
편집 : 추가 샘플 IComparer<char>
구현
는이 나는, "문자열 A"
public class CaseInsensitiveCharComparer : IComparer<char> {
private readonly System.Globalization.CultureInfo ci;
public CaseInsensitiveCharComparer(System.Globalization.CultureInfo ci) {
this.ci = ci;
}
public CaseInsensitiveCharComparer()
: this(System.Globalization.CultureInfo.CurrentCulture) { }
public int Compare(char x, char y) {
return Char.ToUpper(x, ci) - Char.ToUpper(y, ci);
}
}
// Prints 3
Console.WriteLine("This is a test".CountChars('t', new CaseInsensitiveCharComparer()));
현재 배양에 대하여 올바른 대문자로 변환 숯의 ToUpper 수 있지만 리턴 어휘 순서가 정확하지 않다. 아마도 이것은 .NET에서 문자열 비교를 위해서만 지원됩니다. – Holstebroe