我想使用 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)
}
它不会用“g”替换“ğ”。奇怪的是,如果我像这样直接输入:
result = city.stringByReplacingOccurrencesOfString("ğ", withString: "g", options: NSStringCompareOptions.CaseInsensitiveSearch | NSStringCompareOptions.LiteralSearch, range: nil)
它工作得很好。
当我第一次将值赋给 String
变量时,为什么不呢?
最佳答案
看起来您正在尝试删除各种口音和变音符号。一种方法是使用 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
编辑
原样pointed out by Martin R in the comments .你可以在没有 Core Foundation 的情况下做同样的事情:
let original = "šÜįéïöç"
let normalized = original.stringByFoldingWithOptions(.DiacriticInsensitiveSearch, locale: NSLocale.currentLocale())
// = sUieioc
关于ios - Swift 字符串替换事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29731293/