中文转换成拼音
在做一款天气应用时,Api要求的参数是需要传入城市的拼音,原生的Foundation框架下没有相应的方法,但是iOS的CoreFoundation框架里提供了这样的一个函数,用来处理这类的要求。
CFStringTransform函数
// 官方的代码 用于生成一个不可变的CFString的可变copy
// CFMutableStringRef CFStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFStringRef theString);
/*
参数1:创建
参数2:最大的字符串长度,0表示无限制
参数3:将要转换的字符串(C的字符串)
*/
// 使用
// 1.此时先将要转换的字符串,转换成能转换的CFMutableStringRef
CFMutableStringRef tempString = CFStringCreateMuatbleCopy(NULL, 0, CFSTR(”成都“));
// 2.将字符串进行转换
/*
参数1:待转换的字符串 tempString
参数2:将要转换的范围 如果为NULL,则为全部转换
参数3:转换的方式 kCFStringTransformMandarinLatin中文->拼音
参数4:转换是否必须是可逆向的转换
返回值:是否转换成功 true为成功 flase为失败
*/
CFStringTransform(string, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@", tempString);
此时转换之后,执行结果是这样的:
chéng dōu
这时是带有音标的,如果不需要音标,只需要在NSLog前再加上一句即可
CFStringTransform(string, NULL, kCFStringTransformStripDiacritics, NO);
输出结果为:
cheng dou
这样就能完成对中文->拼音的转换
当然这样的方法,在做通讯录相关的东西的时候也是非常的实用!