Wie entferne String
ich in Swift diakritische Zeichen (oder Akzente) aus einem (wie zum Beispiel "één" in "een" ändern)? Muss ich zurück zu NSString
oder kann es in Swift gemacht werden?
73
Sie können direkt mit einem Swift arbeiten String
(wenn "Foundation" importiert wird):
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
Ł
undL
.locale: nil
die allgemeinen Unicode-Regeln undlocale: .current
die der aktuellen Sprachen angewendet werden . Aber ich habe es nicht getestet.Update auf die Antwort von @ MartinR… eine Swift 3- Erweiterung, um eine Zeichenfolge zum Sortieren / Suchen bereitzustellen, die für jemanden nützlich sein könnte…
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: "") } }
z.B
print("Mÿ nâMe ís jÄço´B".forSorting) // "mynameisjacob"
quelle
localizedStandardCompare
.Antwort Update für
Swift 5.0.1
func toNoSmartQuotes() -> String { let userInput: String = self return userInput.folding(options: .diacriticInsensitive, locale: .current) }
und benutze es
someTextField.text.toNoSmartQuotes()
quelle
Das ist meine Lösung
Swift 5
extension String { func unaccent() -> String { return self.folding(options: .diacriticInsensitive, locale: .current) } }
quelle