Мне интересно, какой правильный способ сравнить два персонажа, игнорируя случай, который будет работать для всех культур. Кроме того, Comparer<char>.Default
лучший способ проверить два символа без игнорирования случая? Это работает для суррогатных пар?
EDIT: добавлена реализация IComparer<char>
Если это помогает кому-то, это то, что я решил использовать
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()));