iOS汉字转拼音

来源:互联网 发布:股票交易软件制作 编辑:程序博客网 时间:2024/06/10 18:02

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

那么问题来了, 字母和姓氏怎么对应的呢? 系统是老外写的, 不可能像新华字典一样有个目录吧? 查找官方文档, 在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
原创粉丝点击