Каков правильный способ сравнения символов, игнорирующих регистр? ⇐ C#
Каков правильный способ сравнения символов, игнорирующих регистр?
Мне интересно, какой правильный способ сравнения двух символов без учета регистра будет работать для всех культур. Кроме того, является ли Comparer.Default лучшим способом проверить два символа, не игнорируя регистр? Работает ли это для суррогатных пар?
EDIT: добавлен пример реализации IComparer
Если это кому-то поможет, я решил использовать именно это
публичный класс CaseInsensivityCharComparer: IComparer { частный только для чтения System.Globalization.CultureInfo ci; public CaseInsensusCharComparer(System.Globalization.CultureInfo ci) { this.ci = ci; } общедоступный CaseInsensitivityCharComparer() : this(System.Globalization.CultureInfo.CurrentCulture) { } public int Compare(char x, char y) { return Char.ToUpper(x, ci) - Char.ToUpper(y, ci); } } // Печатает 3 Console.WriteLine("Это тест".CountChars('t', new CaseInsensusCharComparer()));
Мне интересно, какой правильный способ сравнения двух символов без учета регистра будет работать для всех культур. Кроме того, является ли Comparer.Default лучшим способом проверить два символа, не игнорируя регистр? Работает ли это для суррогатных пар?
EDIT: добавлен пример реализации IComparer
Если это кому-то поможет, я решил использовать именно это
публичный класс CaseInsensivityCharComparer: IComparer { частный только для чтения System.Globalization.CultureInfo ci; public CaseInsensusCharComparer(System.Globalization.CultureInfo ci) { this.ci = ci; } общедоступный CaseInsensitivityCharComparer() : this(System.Globalization.CultureInfo.CurrentCulture) { } public int Compare(char x, char y) { return Char.ToUpper(x, ci) - Char.ToUpper(y, ci); } } // Печатает 3 Console.WriteLine("Это тест".CountChars('t', new CaseInsensusCharComparer()));
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Каков самый простой способ определения лексикографического сравнения элементов класса?
Anonymous » » в форуме C++ - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-