Мне интересно, какой правильный способ сравнить два персонажа, игнорируя случай, который будет работать для всех культур. Кроме того, является ли сравнитель .Default лучший способ проверить два символа без игнорирования случая? Работает ли это для суррогатной пар?public class CaseInsensitiveCharComparer : IComparer {
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()));
Подробнее здесь: https://stackoverflow.com/questions/139 ... oring-case