Я понял, что «ß» преобразуется в «SS» при использовании uppercased(). Но я хочу сравнить, если две строки равны, не будучи чувствительными к регистру. Итак, при сравнении «gruß» с «GRUß» он должен быть таким же, как и при сравнении «gru» с «Gru». В немецком языке нет прописных букв «ß»! Поскольку я не знаю, какие другие символы недоступны на соответствующих языках, я не мог отфильтровать все персонажи, у которых не было 1: 1 противник. Что мне делать?Германский символ ß верхний регистр в SS
ответ
Использование caseInsensitiveCompare()
вместо преобразования строки в верхний или нижний регистр:
let s1 = "gruß"
let s2 = "GRUß"
let eq = s1.caseInsensitiveCompare(s2) == .orderedSame
print(eq) // true
Это сравнивает строки в регистронезависимом способом в соответствии с Стандарт Unicode.
Существует также localizedCaseInsensitiveCompare()
, который делает сравнение в соответствии с текущей локализацией и
s1.compare(s2, options: .caseInsensitive, locale: ...)
для учета регистра сравнения в соответствии с произвольной заданной местности.
Вы также можете рассмотреть также 'localizedCaseInsensitiveCompare', который позволит избежать проблем с изменениями в юникод-сопоставлениях. –
@CaseyFleser: Да, спасибо! –
Это интересно. Я хочу проверить, равны ли какие-то строки без учета регистра. Но для меня это должен быть Gruß! = Gruss и Gruß == gruß и Gruß! = GRUSS. Я хочу использовать его в качестве ключа в словаре, чтобы быстро определить, существует ли этот элемент. –
Ну, «GRUß» является нечувствительным в первую очередь по причинам, о которых вы заявляете. Вы не можете бросать произвольные данные на компьютер и ожидать, что он обработает его разумным способом :-) Если вам приходится иметь дело с недопустимым вводом, вы, вероятно, должны иметь фазу предварительной обработки, которая очищает дерьмо, о котором вы знаете.
Сказав, что это работает (Swift 3.0):
let grusz = "GRUß"
let gruss = "GRUSS"
if grusz.compare(gruss, options: .caseInsensitive) == .orderedSame {
print("MATCHES")
}
- 1. Преобразуйте символ «ß» (символ столицы Eszett) в «SS» для IE
- 2. Eszett (ß) в приложении для Android
- 3. Как преобразовать этот символ в верхний регистр?
- 4. Преобразование строки в порядковый верхний или нижний регистр
- 5. SQL-запрос, который различает ß и ss
- 6. Почему «ss» равен немецкому острому персонажу «ß»?
- 7. Преобразование указатель на символ в верхний регистр в C
- 8. mySQL конвертировать символ в строку в верхний регистр
- 9. Как преобразовать входной символ в верхний регистр автоматически в Java
- 10. Установить первый символ в строке в верхний регистр
- 11. Как преобразовать символ в верхний регистр без использования функции toupper
- 12. Простой способ установить один символ NSString в верхний регистр
- 13. Преобразование в верхний регистр в
- 14. Верхний и нижний регистр
- 15. Избирательно верхний регистр строки
- 16. GSON False верхний регистр
- 17. Имея верхний регистр, нижний регистр и цифры в GUID
- 18. Средний знак на верхний регистр в java
- 19. Автоматически конвертировать в верхний регистр
- 20. Нажать массив в верхний регистр
- 21. Преобразование массива в верхний регистр
- 22. Преобразование символа в верхний регистр
- 23. Верхний регистр в Oracle sql
- 24. верхний регистр MONTHNAMES в momentjs
- 25. Продвинутый чековый регистр (верхний/нижний) в строке
- 26. PHP верхний регистр равно нижний регистр
- 27. Запрос Заголовки преобразуются в верхний регистр
- 28. vncdo отправить верхний, строчный регистр и специальный символ
- 29. Элемент массива подстроки, когда символ имеет верхний регистр
- 30. Преобразование первого символа строки в верхний регистр
На самом деле, с 2008 года существует прописная 'ß' на немецком языке: https://en.wikipedia.org/wiki/Capital_%E1 % BA% 9E –
Спасибо, я не знал этого. Но я стар и узнал все вещи в другом столетии! ;-) –