在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法

代码实现


+ (NSString *)transform:(NSString *)chinese{//将NSString装换成NSMutableStringNSMutableString *pinyin = [chinese mutableCopy];//将汉字转换为拼音(带音标)CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);NSLog(@"%@", pinyin);//去掉拼音的音标CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);NSLog(@"%@", pinyin);//返回最近结果return pinyin;}

kCFStringTransformMandarinLatin
方法转化出来的是带音标的拼音,如果需要去掉音标,则继续使用kCFStringTransformStripCombiningMarks
方法即可。

方法介绍


在iOS中实现上述功能,其实主要是CFStringTransform方法出了大力气,我们来重点介绍下这个方法

//函数原型
Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse);
参数具体介绍
  • string: 需要转换的字符串。由于这个参数是 CFMutableStringRef 类型,一个 NSMutableString 类型也可以通过自由桥接的方式传入。
  • range: 转换操作作用的范围。这个参数是 CFRange,而不是 NSRange。当给定为NULL时,操作范围为全部
  • transform: 需要应用的变换。这个参数使用了包含下面将提到的字符串常量的 ICU transform string。
  • reverse: 如有需要,是否返回反转过的变换。

在上述参数中,重点也是难点的是 transform 参数,这个参数是一个CFStringRef类型的参数;来到头文件,我们会发现,这个参数的值有很多

transform

我们来粗略的介绍下上面这些值的作用,如下图:

transform 参数作用

从上图我们可以看出,利用这些值,我们输入左边(Input)的语言,那么结果为右边(Output)的;
上面有些还没有介绍,就不再一一介绍了,这里我再重点介绍一个我们上面用到的kCFStringTransformStripCombiningMarks,他的功能就是去掉原有字符串中的音标或者类似于音标的符号。

本文主要参考:http://nshipster.cn/cfstringtransform/

文/tanyufeng(简书作者)
原文链接:http://www.jianshu.com/p/a28be7b7f1d3
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

iOS 获取汉字的拼音相关推荐

  1. iOS 获取汉字的拼音 CFStringTransform

    在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 代码实现 + (NSString *)transform:(NSString *)chinese{//将NSString装 ...

  2. iOS 获取汉字拼音首字母

    iOS获取汉字首字母 这个一般用在通讯里排序居多,我这里就是用到了通讯里的排序,然后就来mark一下,记录. 核心代码 char pinyinFirstLetter(unsigned short ha ...

  3. iOS获取汉字拼音首字母的方法

    iOS获取汉字拼音首字母的方法 之前在项目中需要根据昵称的首字母进行排序,蹚了几个坑,今天记录一下.其实iOS系统封装的就有获取汉字首字母的方法,但不推荐,想看最优解的同学直接略过: var name ...

  4. C# 获取汉字的拼音首字母(转)

    原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicod ...

  5. C# 获取汉字的拼音首字母和全拼(含源码)

    C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手 ...

  6. (转)C# 获取汉字的拼音首字母和全拼(含源码)[A]

    https://blog.csdn.net/younghaiqing/article/details/62417269 C# 获取汉字的拼音首字母 一种是把所有中文字符集合起来组成一个对照表:另一种是 ...

  7. java汉字转换拼音,获取汉字串拼音首字母

    首先要下载  pinyin4j  的jar包 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j ...

  8. java汉字的拼音首字母_Java 获取汉字的拼音首字母

    Java 获取汉字的拼音首字母: pom.xml 引用 pinyin4j 包: com.belerweb pinyin4j 2.5.0 PinyinUtil 类: package com.xxx.co ...

  9. 使用pinyin4j获取汉字的拼音和全角半角转换

    前段时间sprint分配了一项任务,查询一个bug,页面搜索汉字加上拼音的时候,无法匹配.最开始的时候以为拼音函数有问题,所以估了一下点就开始着手这件事情. 拼音工具类如下: /** * 获取汉字串拼 ...

最新文章

  1. 大型Java多用户商城系统设计开发的心得和困难
  2. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul
  3. SQL 字符串分割表函数
  4. Golang使用pkg-config自动获取头文件和链接库的方法
  5. 使用Payara Micro的Easy Java EE Microservices
  6. 《软件项目管理(第二版)》第 9 章——项目监督与控制 重点部分总结
  7. PHP以xml形式获取POST数据
  8. iframe去边框,无边框。使用大全
  9. unique函数_包含虚函数的类应该有虚析构函数或保护析构函数?
  10. 酷软 正在连接服务器,酷软一直显示正在连接服务器...系统日志有大量错误信息...
  11. WPF使用 Gmap.NET 绘制极坐标运动轨迹
  12. 企业生产现场中5S管理的应用
  13. 结构化程序设计(structured programming)
  14. 西瓜书第三章习题及答案
  15. 马里兰大计算机专业学phd博士,美国纽约州立大学石溪分校计算机专业博士CS PHD全奖OFFER...
  16. J9数字论:关于区块链的那些专业术语
  17. [SpringCould篇]之服务消费方式Ribbon+RestTemplate
  18. Excel中随机六位字母与数字的密码
  19. java运算符与数字分解,看完对java更加有信心了(主除以和取余的理解)
  20. Sqoop常用命令回顾

热门文章

  1. Win11安全中心无法打开怎么解决?
  2. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名
  3. Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击
  4. 《道德经》第二十三章
  5. Android集成MuPDF,修改批注默认红色墨迹为黑色墨迹
  6. Docker学习笔记2——Docker组件(幕布笔记)
  7. 自动驾驶之去光晕调研
  8. 自学java,学多久可以自己找到工作?
  9. 英语口语279之每日十句口语
  10. 林园4月21日北大投资报告会实录