我想用Swift用英文字母替换一些字符.替换代码:
let turkish = ["?", "?", "ü", "?", "ö", "ç"]
let english = ["i", "g", "u", "s", "o", "c"]
var city = "A?ri"
var result = ""
for i in 0..<turkish.count {
var target = turkish[i]
var destination = english[i]
result = city.stringByReplacingOccurrencesOfString(target, withString: destination, options: NSStringCompareOptions.CaseInsensitiveSearch | NSStringCompareOptions.LiteralSearch, range: nil)
}
Run Code Online (Sandbox Code Playgroud)
它不会用"g"代替"ğ".奇怪的是,如果我像这样直接输入:
result = city.stringByReplacingOccurrencesOfString("?", withString: "g", options: NSStringCompareOptions.CaseInsensitiveSearch | NSStringCompareOptions.LiteralSearch, range: nil)
Run Code Online (Sandbox Code Playgroud)
它工作得很好.
当我第一次将值String赋给变量时,为什么不呢?
Dav*_*ist 11
看起来你正试图删除各种口音和变音符号.您可以使用的一种方法是使用CFStringTransform.
在Swift中,它看起来像这样:
let original = "šÜ?éïöç"
var mutableString = NSMutableString(string: original) as CFMutableStringRef
CFStringTransform(mutableString, nil, kCFStringTransformStripCombiningMarks, Boolean(0))
let normalized = (mutableString as NSMutableString).copy() as! NSString
// = sUieioc
Run Code Online (Sandbox Code Playgroud)
正如Martin R在评论中指出的那样.没有Core Foundation你也可以这样做:
let original = "šÜ?éïöç"
let normalized = original.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
// = sUieioc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |