iOS汉字转拼音

微信通讯录列表右侧字母表控件, 着实感觉功能强大, 查找好友只要轻轻一划, 就可以找到好友, 而无需从很长的列表划好几下, 更没必要从标签查找了. 

那么问题来了, 字母和姓氏怎么对应的呢? 系统是老外写的, 不可能像新华字典一样有个目录吧? 查找官方文档, 在CoreFoundation框架中找到了CString这个文件中的

CFStringTransform函数, 其实就这个函数就可以实现汉字转拼音的功能.

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

类方法:

iOSChineseToPinyin.h

[objc]  view plain  copy
  1. @interface iOSChineseToPinyin : NSObject  
  2.   
  3. + (NSString *)getPinyin:(NSString *)chinese;  
  4.   
  5. @end</span>  

iOSChineseToPinyin.m

[objc]  view plain  copy
  1. @implementation iOSChineseToPinyin  
  2.   
  3. + (NSString *)getPinyin:(NSString *)chinese {  
  4.     NSMutableString *mutableString = [NSMutableString stringWithString:chinese];  
  5.     // Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);  
  6.     CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false); // 汉字转成拼音(不知道为什么英文是拉丁语的意思)  
  7.     CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false); // 去掉音调  
  8.     return mutableString;  
  9. }  
  10.   
  11. @end</span>  

NSString类别:

NSString+Pinyin.h

[objc]  view plain  copy
  1. @interface NSString (Pinyin)  
  2.   
  3. - (NSString *)getPinyin;  
  4.   
  5. @end</span>  

NSString+Pinyin.m

[objc]  view plain  copy
  1. @implementation NSString (Pinyin)  
  2.   
  3. - (NSString *)getPinyin {  
  4.     NSMutableString *mutableString = [NSMutableString stringWithString:self];  
  5.     // Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);  
  6.     CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false); // 汉字转成拼音(不知道为什么英文是拉丁语的意思)  
  7.     CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false); // 去掉音调  
  8.     return mutableString;  
  9. }  
  10.   
  11. @end</span>  

封装的好处就是方便调用嘛~

类方法调用:

[objc]  view plain  copy
  1. #import "iOSChineseToPinyin.h"  
  2. NSString *chinese = @"好好学习,天天向上";  
  3. NSString *pinyin = [iOSChineseToPinyin getPinyin:chinese];  
  4. NSLog(@"Method: %@",pinyin);</span>  
类别调用:

[objc]  view plain  copy
  1. #import "NSString+Pinyin.h"  
  2. NSString *chinese = @"好好学习,天天向上";  
  3. NSLog(@"Category: %@", [chinese getPinyin]);</span>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值