使用CFStringTransform将汉字转换为拼音
/*
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为NULL,视为全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。如果转换成功就返回true,否则返回false。
*/
- (NSString *)transform:(NSString *)chiness
{
NSMutableString *pinyin = [chiness mutableCopy];
//将汉字转换成带音标的拼音
CFStringTransform((__bridge CFMutableStringRef) pinyin, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@",pinyin);
//将音标字母转换为普通字母
CFStringTransform((__bridge CFMutableStringRef) pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@",pinyin);
//如果有多音字,需要自己手动改
//如下
if ([[(NSString *)pinyin substringToIndex:1] compare:@"重"] == NSOrderedSame)
{
[pinyin replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"];
}
return pinyin;
}
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为NULL,视为全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。如果转换成功就返回true,否则返回false。
*/
- (NSString *)transform:(NSString *)chiness
{
NSMutableString *pinyin = [chiness mutableCopy];
//将汉字转换成带音标的拼音
CFStringTransform((__bridge CFMutableStringRef) pinyin, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@",pinyin);
//将音标字母转换为普通字母
CFStringTransform((__bridge CFMutableStringRef) pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@",pinyin);
//如果有多音字,需要自己手动改
//如下
if ([[(NSString *)pinyin substringToIndex:1] compare:@"重"] == NSOrderedSame)
{
[pinyin replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"];
}
return pinyin;
}