2015-04-08 14 views

cevap

81

Bir Swift String ("Vakıf" ithal ise) doğrudan çalışabilir:

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

Güzel çözüm! Teşekkürler. –

+0

Teşekkür ederiz! Mükemmel çalıştı! –

+0

Her zamanki gibi mükemmel cevap. StringByFoldingWithOptions'ın NSString'den bir yöntem olduğunu unutmayın. Bu, Swift 2'deki NSString ve String arasındaki kesintisiz köprülemenin avantajından yararlanır. Swift 3'teki işler farklıdır. –

4

Güncelleme @ MartinR cevabı ... Bir Swift 3 birisi için yararlı olabilir sıralama/arama için bir dize sağlamak için uzatma ...

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: "") 
    } 
} 

ör

print("Mÿ nâMe ís jÄço´B".forSorting) // "mynameisjacob" 
+1

Şimdi bu sıralama çok yerel ayarlara bağlı olmalıdır. Örneğin, benim "ch" dilinde "h" "i" arasındaki bir harftir. Sıralama için thay aksaklık duyarsız sadece doğru dize arama seçeneklerini kullanın. – Sulthan

İlgili konular