如何从String
Swift中删除变音符号(或重音符号)(例如说将“één”更改为“ een”)?我必须回到NSString
Swift还是可以在Swift中完成?
Answers:
您可以直接在Swift上操作String
(如果导入了“ Foundation”):
let foo = "één"
let bar = foo.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
print(bar) // een
斯威夫特3:
let foo = "één"
let bar = foo.folding(options: .diacriticInsensitive, locale: .current)
print(bar) // een
Ł
和之间的关系L
。
locale: nil
将应用通用Unicode规则以及locale: .current
当前语言的规则。但是我还没有测试。
更新到@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"
localizedStandardCompare
。