2015-04-08 9 views

Antwort

81

können Sie arbeiten direkt auf einem Swift String (wenn "Foundation" wird importiert):

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 
+0

Schöne Lösung! Vielen Dank. –

+0

Danke! Es hat perfekt funktioniert! –

+0

Ausgezeichnete Antwort wie immer. Beachten Sie, dass stringByFoldingWithOptions eine Methode von NSString ist. Dies nutzt die nahtlose Überbrückung zwischen NSString und String in Swift 2. Die Dinge sind anders in Swift 3. –

4

Update @ martinR Antwort ... ein Swift 3 Erweiterung, um eine Zeichenfolge zum Sortieren/Suchen, 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" 
+1

Sie sollten jetzt, dass die Sortierung ist sehr locale abhängig. Zum Beispiel ist "ch" in meiner Sprache ein Buchstabe zwischen "h" "i". Zum Sortieren von diakritischen Zeichen verwenden Sie einfach die richtigen Suchoptionen. – Sulthan

Verwandte Themen