陈斌彬的技术博客

Stay foolish,stay hungry

iOS 使用CFStringTransform汉字转拼音

iOS在CoreFoundation中提供了CFStringTransform函数,但在Foundation中却没有相对应的方法。它的定义如下:

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

其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为NULL,视为全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。如果转换成功就返回true,否则返回false。

如果要进行汉字到拼音的转换,我们只需要将transform设定为kCFStringTransformMandarinLatin或者kCFStringTransformToLatinkCFStringTransformToLatin也可适用于非汉字字符串)

//    获取汉语拼音
    NSString *str = @"曾经 hello";
    NSMutableString *pinyin = [str mutableCopy];
//创建CFStrCFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, CFSTR("中国"));
    //转换成拼音
    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);
    //去掉音标
//    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripDiacritics, NO);
    NSLog(@"pinyin= %@",pinyin);

对应的转换格式:

img