ios - Swift 字符串替换事件

标签 ios swift

我想使用 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/

相关文章:

iphone - 如何使用标识符隐藏按钮(恢复 ID)

当通知窗口不在 View 中时,iOS 10 小部件会停止

swift - 从 Swift 数组中删除元素

ios - 二维码添加多个键值对

ios - getter setter 模型类 Oop

swift - 从未使用过捕获 self

iphone - 在 GPUImage 中实现一个简单的自适应阈值

ios - Swift - Objective C - "Controller"不符合协议(protocol) JBBarChartViewDelegate

ios - Unwind 正常工作,直到我添加 prepareForSegue

swift - Core Image 调整 CIImage 大小而不损失质量