iOS_CoreFoundation_汉字转换拼音的实现

来源:互联网 发布:windows server搭建nas 编辑:程序博客网 时间:2024/04/30 04:48

说明:
在Object-C中可以很容易的实现非拉丁字符的转化, 如汉字转换成拼音.
主要涉及到Core Function框架中的CFMutableString Reference相关函数

核心API

库: CoreFoundation
API: CFStringTransform
涉及API:

Boolean CFStringTransform ( CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse );

代码

- (IBAction)handleAction:(id)sender {    /** 要转换的汉字 */    NSMutableString *str = @"北京".mutableCopy;    /** 通过函数进行转换     * @param string 要转换的字符串, 注意是类型是 CFMutableStringRef     * @param range 转换的范围, NULL值表示转换整个字符串
     * @param transform 转换的选项(是个枚举值, kCFStringTransformMandarinLatin是将汉字转化为拼音)     * @param reverse 是否反转.     *     */    if (CFStringTransform((__bridge CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO)) {        NSLog(@"转换成功");        NSLog(@"%@", str);    } else {        NSLog(@"转换失败");    }    /** 通过上面的方法,转换的汉语拼音带有声调, 如果取消声调, 可以通过转换函数的其它transform选项 */    if (CFStringTransform((__bridge CFMutableStringRef)str , NULL, kCFStringTransformMandarinLatin, NO)) {        /** 取消声调 */        if (CFStringTransform((__bridge CFMutableStringRef)str , NULL, kCFStringTransformStripDiacritics, NO)) {            NSLog(@"转换成功");            NSLog(@"取消声调的拼音: %@", str);        } else {            NSLog(@"取消声调失败");        }    }  else {        NSLog(@"转换汉字失败");    }}/** 转换函数的可转换的选项 Transform Identifiers for CFStringTransform      const CFStringRef kCFStringTransformStripCombiningMarks;     const CFStringRef kCFStringTransformToLatin;               ** 也可以转换为汉字     const CFStringRef kCFStringTransformFullwidthHalfwidth;     const CFStringRef kCFStringTransformLatinKatakana;     const CFStringRef kCFStringTransformLatinHiragana;     const CFStringRef kCFStringTransformHiraganaKatakana;     const CFStringRef kCFStringTransformMandarinLatin;         ** 转换为汉字     const CFStringRef kCFStringTransformLatinHangul;     const CFStringRef kCFStringTransformLatinArabic;     const CFStringRef kCFStringTransformLatinHebrew;     const CFStringRef kCFStringTransformLatinThai;     const CFStringRef kCFStringTransformLatinCyrillic;     const CFStringRef kCFStringTransformLatinGreek;     const CFStringRef kCFStringTransformToXMLHex;     const CFStringRef kCFStringTransformToUnicodeName;     const CFStringRef kCFStringTransformStripDiacritics;       ** 取消声调符号     */

Demo 代码中有一个NSString的类目, 实现将首个汉字转换为拼音, 并实现大写.

Demo的GitHub链接

0 0
原创粉丝点击