swift 汉字转拼音

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

public func CFStringTransform(string: CFMutableString!, _ range: UnsafeMutablePointer<CFRange>, _ 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ó    (保留空格和音标)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容