美文网首页iOS带我飞5iOS开发
iOS 获取汉字的拼音

iOS 获取汉字的拼音

作者: tanyufeng | 来源:发表于2016-05-09 09:16 被阅读2617次

    在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法

    代码实现


    + (NSString *)transform:(NSString *)chinese{
        //将NSString装换成NSMutableString
        NSMutableString *pinyin = [chinese mutableCopy];
        
        //将汉字转换为拼音(带音标)
        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);
        NSLog(@"%@", pinyin);
        
        //去掉拼音的音标
        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
        NSLog(@"%@", pinyin);
        
        //返回最近结果
        return pinyin;
        
    }
    

    kCFStringTransformMandarinLatin
    方法转化出来的是带音标的拼音,如果需要去掉音标,则继续使用kCFStringTransformStripCombiningMarks
    方法即可。

    方法介绍


    在iOS中实现上述功能,其实主要是CFStringTransform方法出了大力气,我们来重点介绍下这个方法

    //函数原型
    Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
    
    参数具体介绍
    • string: 需要转换的字符串。由于这个参数是 CFMutableStringRef 类型,一个 NSMutableString 类型也可以通过自由桥接的方式传入。
    • range: 转换操作作用的范围。这个参数是 CFRange,而不是 NSRange。当给定为NULL时,操作范围为全部
    • transform: 需要应用的变换。这个参数使用了包含下面将提到的字符串常量的 ICU transform string。
    • reverse: 如有需要,是否返回反转过的变换。

    在上述参数中,重点也是难点的是 transform 参数,这个参数是一个CFStringRef类型的参数;来到头文件,我们会发现,这个参数的值有很多

    transform

    我们来粗略的介绍下上面这些值的作用,如下图:

    transform 参数作用

    从上图我们可以看出,利用这些值,我们输入左边(Input)的语言,那么结果为右边(Output)的;
    上面有些还没有介绍,就不再一一介绍了,这里我再重点介绍一个我们上面用到的kCFStringTransformStripCombiningMarks,他的功能就是去掉原有字符串中的音标或者类似于音标的符号。

    本文主要参考:http://nshipster.cn/cfstringtransform/

    欢迎大家踊跃评论,让我们一起探讨技术!!
    如果觉得文章不错,请帮忙点击文章下方的喜欢!!
    你的支持将是对我最好的鼓励, 谢谢!!!

    相关文章

      网友评论

      本文标题:iOS 获取汉字的拼音

      本文链接:https://www.haomeiwen.com/subject/ifasrttx.html