iOS汉字转拼音

作者: Gadfly_ | 来源:发表于2016-11-08 21:46 被阅读160次

iOS汉字转拼音

微信通讯录列表右侧的字母表控件, 想必大家每天都在使用, 其功能着实感觉强大, 查找好友只需要轻轻一划, 就可以根据姓氏首字母找到好友, 而无需从很长的列表划好几下, 更没必要从标签查找了. 这种便捷想必大家每天都在收益.

那么问题来了, 字母和姓氏怎么一一对应的呢?系统是老外写的,不可能像新华字典那样对每个汉字都有个目录吧?

终于功夫不负有心人, 查找官方文档, 在CoreFoundation框架的CFString.h文件中找到了CFStringTransform函数,其实这个函数就可以实现汉字转拼音的功能.

在此我分别封装了一个类方法和一个NSString的类别方法:

1. 类方法:

iOSChineseToPinyin.h

#import <Foundation/Foundation.h>

@interface iOSChineseToPinyin : NSObject

+ (NSString *)getPinyin:(NSString *)chinese;

@end

iOSChineseToPinyin.m

#import "iOSChineseToPinyin.h"

@implementation iOSChineseToPinyin

+ (NSString *)getPinyin:(NSString *)chinese {
    NSMutableString *mutableString = [NSMutableString stringWithString:chinese];
    // Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false); // 汉字转成拼音(不知道为什么英文是拉丁语的意思)
    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false); // 去掉音调
    return mutableString;
}

@end

2. 类别方法:

NSString+Pinyin.h

#import <Foundation/Foundation.h>

@interface NSString (Pinyin)

- (NSString *)getPinyin;

@end

NSString+Pinyin.m

#import "NSString+Pinyin.h"

@implementation NSString (Pinyin)

- (NSString *)getPinyin {
    NSMutableString *mutableString = [NSMutableString stringWithString:self];
    // Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false); // 汉字转成拼音(不知道为什么英文是拉丁语的意思)
    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false); // 去掉音调
    return mutableString;
}

@end

封装的好处就是方便调用嘛~
下面给出一个小小的Example:

#import <Foundation/Foundation.h>
#import "iOSChineseToPinyin.h"
#import "NSString+Pinyin.h"


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSString *chinese = @"好好学习,天天向上!";
        
        // 类方法调用
        NSString *pinyin = [iOSChineseToPinyin getPinyin:chinese];
        NSLog(@"Method: %@",pinyin);
        
        // 类别调用
        NSLog(@"Category: %@", [chinese getPinyin]);
        
        
    }
    return 0;
}

Result:

汉字转拼音运行结果

代码直接拿去吧!


如果代码中有什么 bug 或者需要改进的地方, 还望海涵, 同时欢迎在下方留言~

不要吝啬您那宝贵的♥︎&★就好, 您的支持是我分享的动力~😝

相关文章

  • Python 拼音汉字互转

    汉字转拼音:pypinyin拼音转汉字:Pinyin2Hanzi Python汉字转拼音-拼音转汉字的效率测评

  • IOS 汉字转拼音

    网上找到的一些小知识,记录一下。 //获取拼音字母(传入汉字字符串, 返回大写拼音字母) - (NSString ...

  • iOS汉字转拼音

    汉字转拼音 系统库实现:

  • iOS汉字转拼音

    1.核心方法 参数一*:需要传入CFMutableStringRef类型的字符串, 这个字符串就是这里的主角, 想...

  • iOS汉字转拼音

    汉字转拼音之前有很多人用的都是一个拼音库,pinyin.h和pinyin.m,用着还算方便吧。 后来发现苹果的fr...

  • iOS 汉字转拼音

    在oc 之中的字符串为汉字的时候,我们常常要进行字符串比较,尤其是类似通讯录的项目,但是汉字不能比较,所以就要将汉...

  • IOS 汉字转拼音

    //汉字转拼音 + (NSString *)transform:(NSString *)chinese{NSMut...

  • iOS 汉字转拼音

    在ios开发中经常碰到做通讯录需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 用kCFStringTra...

  • iOS汉字转拼音

    iOS汉字转拼音 微信通讯录列表右侧的字母表控件, 想必大家每天都在使用, 其功能着实感觉强大, 查找好友只需要轻...

  • ios汉字转拼音

    直接附上代码:

网友评论

  • liangZhen:楼主,你试过这几个词吗? 比如厦门,大厦,沈佳宜,沈阳。
    Boole:@liangZhen shěn chén
    部 首 氵 笔 画 7 五 行 水 繁 体 瀋 五 笔 IPQN
    生词本
    基本释义 详细释义

    [ shěn ]
    1.通“瀋”。汁:“为榆~”。
    2.“瀋”的简化字。中国辽宁省沈阳市的简称。
    3.姓。
    [ chén ]
    同“沉”。
    liangZhen:@MacroDo 楼主我试了沈佳宜,系统一直返回chen jia yi ,可是沈字没有chen这个音的
    Gadfly_:@liangZhen 没那么智能… 中华文化太博大精深

本文标题:iOS汉字转拼音

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