swift中提供了这样一个方法:
- public func CFStringTransform(string: CFMutableString!,_ range: UnsafeMutablePointer<CFRange>,152)">_ transform: CFString!,152)">_ reverse: Bool) -> Bool
注释的大意是转换制定的字符串,并修改传进来的参数,只有指定范围内被修改,范围制定为空则整个字符串都被修改。如果转型成功返回true,失败返回false。
我们扩展一个String类的方法:
- extension String {
-
- transformToPinYin() -> String {
-
- let mutableString = NSMutableString(string: self)
- //把汉字转为拼音
- CFStringTransform(mutableString,nil,kcfStringTransformToLatin,false)
- //去掉拼音的音标
- kcfStringTransformStripDiacritics,false)
- let string = String(mutableString)
- //去掉空格
- return string.stringByReplacingOccurrencesOfString(" ",withString: "")
- }
- }
实际中根据需求决定是否保留音标和空格。
- print("中国".transformToPinYin())
输出结果:
- zhongguo
- zhong guo (保留空格)
- zhōng guó (保留空格和音标)