CFStringTransform
2016-01-11 09:08
387 查看
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或者kCFStringTransformToLatin(kCFStringTransformToLatin也可适用于非汉字字符串):
CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, CFSTR("中国"));
CFStringTransform(string, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@", string);
这段代码将输出:
2015-11-22 14:41:14.644 Test[2436:907] zhōng guó
可以看出,CFStringTransform正确的输出了“中国”的拼音,而且还带上了音标。有时候我们不需要音标怎么办?还好CFStringTransform同时提供了将音标字母转换为普通字母的方法kCFStringTransformStripDiacritics。我们在上面的代码基础上再加上这个:
CFStringTransform(string, NULL, kCFStringTransformStripDiacritics, NO);
NSLog(@"%@", string);
那么最终将输出:
2015-11-22 14:47:00.380 Test[2470:907] zhong guo
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
其中string参数是要转换的string,比如要转换的中文,同时它是mutable的,因此也直接作为最终转换后的字符串。range是要转换的范围,同时输出转换后改变的范围,如果为NULL,视为全部转换。transform可以指定要进行什么样的转换,这里可以指定多种语言的拼写转换。reverse指定该转换是否必须是可逆向转换的。如果转换成功就返回true,否则返回false。
如果要进行汉字到拼音的转换,我们只需要将transform设定为kCFStringTransformMandarinLatin或者kCFStringTransformToLatin(kCFStringTransformToLatin也可适用于非汉字字符串):
CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, CFSTR("中国"));
CFStringTransform(string, NULL, kCFStringTransformMandarinLatin, NO);
NSLog(@"%@", string);
这段代码将输出:
2015-11-22 14:41:14.644 Test[2436:907] zhōng guó
可以看出,CFStringTransform正确的输出了“中国”的拼音,而且还带上了音标。有时候我们不需要音标怎么办?还好CFStringTransform同时提供了将音标字母转换为普通字母的方法kCFStringTransformStripDiacritics。我们在上面的代码基础上再加上这个:
CFStringTransform(string, NULL, kCFStringTransformStripDiacritics, NO);
NSLog(@"%@", string);
那么最终将输出:
2015-11-22 14:47:00.380 Test[2470:907] zhong guo
相关文章推荐
- CentOS 7部署OpenStack(7)―部署Newtron(计算节点)
- 再见ZXing 使用系统原生代码处理QRCode
- CentOS 7部署OpenStack(6)―部署Newtron(控制节点)
- html css
- 理解Objective-C的变量以及面相对象的继承特性
- CentOS 7部署OpenStack(5)―部署Nova计算节点
- 基于jquery封装的一个调色板,用到了Deferred对象回调
- 查找数组当中指定的信息([示例]NSPredicate基础-查询数组中符合条件的子集)
- CentOS 7部署OpenStack(4)―部署Nova控制节点
- CentOS 7部署OpenStack(3)―部署Glance
- hdu-1426-Sudoku Killer(dfs)
- S3C6410裸机 - 外部中断程序
- 用SQL语句建库建表建约束(用SQl语句在指定盘符创建文件夹)
- 基于Python实现文件大小输出
- CentOS 7部署OpenStack(2)―安装keystone服务
- 工具
- WPF INotifyPropertyChanged接口
- CentOS 7部署OpenStack(1)-―准备基础环境
- Android编程获取控件宽和高的方法总结分析
- 分布式系统架构