如何从StringSwift中删除变音符(或重音符号)(比如说改变"één"到"een")?我是否必须回到NSString或者可以在Swift中完成?
Mar*_*n R 135
您可以直接在Swift上操作String(如果导入了"Foundation"):
let foo = "één"
let bar = foo.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
print(bar) // een
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
let foo = "één"
let bar = foo.folding(options: .diacriticInsensitive, locale: .current)
print(bar) // een
Run Code Online (Sandbox Code Playgroud)
Ash*_*lls 13
更新到@ 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: "")
}
}
Run Code Online (Sandbox Code Playgroud)
例如
print("Mÿ nâMe ís jÄço´B".forSorting) // "mynameisjacob"
Run Code Online (Sandbox Code Playgroud)
小智 12
这是我的解决方案\xc3\xb3n
\n雨燕5
\n extension String {\n\n func unaccent() -> String {\n\n return self.folding(options: .diacriticInsensitive, locale: .current)\n\n }\n\n }\nRun Code Online (Sandbox Code Playgroud)\n
Leo*_*bus 10
这也可以通过应用StringTransform:
let foo = "\xc3\xa9\xc3\xa9n"\nlet bar = foo.applyingTransform(.stripDiacritics, reverse: false)!\nprint(bar) // een\nRun Code Online (Sandbox Code Playgroud)\n或者实现自定义属性StringProtocol
extension StringProtocol {\n var strippingDiacritics: String {\n applyingTransform(.stripDiacritics, reverse: false)!\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nlet bar = foo.strippingDiacritics\nprint(bar) // een\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
15474 次 |
| 最近记录: |