swift 汉字转拼音

swift中提供了这样一个方法:

public func CFStringTransform(string: CFMutableString!, _ range: UnsafeMutablePointer, _ transform: CFString!, _ reverse: Bool) -> Bool

注释的大意是转换制定的字符串,并修改传进来的参数,只有指定范围内被修改,范围制定为空则整个字符串都被修改。如果转型成功返回true,失败返回false。

我们扩展一个String类的方法:

extension String {
    
    func transformToPinYin() -> String {
        
        let mutableString = NSMutableString(string: self)
        //把汉字转为拼音
        CFStringTransform(mutableString, nil, kCFStringTransformToLatin, false)
        //去掉拼音的音标
        CFStringTransform(mutableString, nil, kCFStringTransformStripDiacritics, false)

        let string = String(mutableString)
        //去掉空格
        return string.replacingOccurrences(of: " ", with: "")
    }
}

实际中根据需求决定是否保留音标和空格。

print("中国".transformToPinYin())

输出结果:

zhongguo
zhong guo    (保留空格)
zhōng guó    (保留空格和音标)

汉字转拼音比较消耗性能,在循环中务必小心使用。

你可能感兴趣的:(swift 汉字转拼音)