Как удалить диакритические символы из строки в Swift?

Как удалить диакритические знаки (или акценты) из String (например, изменить «één» to «een») в Swift? Должен ли я вернуться к NSString или это можно сделать в Swift?

Вы можете напрямую работать с Swift String (если импортируется «Foundation»):

 let foo = "één" let bar = foo.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale()) print(bar) // een 

Swift 3:

 let foo = "één" let bar = foo.folding(options: .diacriticInsensitive, locale: .current) print(bar) // een 

Обновите ответ @ MartinR … расширение Swift 3, чтобы предоставить строку для сортировки / поиска, которая может быть полезна для кого-то …

 extension String { var forSorting: String { let simple = folding(options: [.diacriticInsensitive, .widthInsensitive, .caseInsensitive], locale: nil) let nonAlphaNumeric = CharacterSet.alphanumerics.inverted return simple.components(separatedBy: nonAlphaNumeric).joined(separator: "") } } 

например

 print("Mÿ nâMe ís jÄço´B".forSorting) // "mynameisjacob" 
  • UIAlertController - добавление пользовательских представлений в таблицу действий
  • Почему дополнительная константа автоматически не имеет значения по умолчанию nil
  • Как проверить равенство перечислений Swift со связанными значениями
  • Предоставление значения по умолчанию для параметра Опция в Swift?
  • Почему двойники печатаются по-разному в словарях?
  • Swift 2 (executeFetchRequest): обработка ошибок
  • Что означает восклицательный знак на языке Swift?
  • Значение типа «StorageMetadata» не имеет имени пользователя downloadURL '
  • Ошибка обнаружения PhotoPicker: Ошибка Домен = Код PlugInKit = 13
  • В чем разница между использованием ARAnchor для вставки узла и непосредственной вставкой узла?
  • Как я могу использовать индексы строковой развертки в Swift 4?
  • Давайте будем гением компьютера.