在 Swift 5 中,String 有一个名为 applyingTransform(_:reverse:) 的方法。 applyingTransform(_:reverse:) 有以下声明:
func applyingTransform(_ transform: StringTransform, reverse: Bool) -> String?
以下 Playground 代码显示了如何使用 applyingTransform(_:reverse:) 将西里尔字母音译为拉丁字母:
import Foundation
let string = "матрешка"
let latinString = string.applyingTransform(StringTransform.toLatin, reverse: false)
let noDiacriticString = latinString?.applyingTransform(StringTransform.stripDiacritics, reverse: false)
print(latinString) // prints: Optional("matreška")
print(noDiacriticString) // prints: Optional("matreska")
作为替代方案,您可以使用 Core Foundation CFStringTransform(_:_:_:_:) 函数:
import Foundation
let mutableString = NSMutableString(string: "матрешка")
CFStringTransform(mutableString, nil, kCFStringTransformToLatin, false)
print(mutableString) // prints: matreška
CFStringTransform(mutableString, nil, kCFStringTransformStripDiacritics, false)
print(mutableString) // prints: matreska