iOS 获取汉字的拼音 CFStringTransform

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

代码实现


+ (NSString *)transform:(NSString *)chinese{
    //将NSString装换成NSMutableString
    NSMutableString *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类型的参数;来到头文件,我们会发现,这个参数的值有很多

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

从上图我们可以看出,利用这些值,我们输入左边(Input)的语言,那么结果为右边(Output)的;

上面有些还没有介绍,就不再一一介绍了,这里我再重点介绍一个我们上面用到的kCFStringTransformStripCombiningMarks,他的功能就是去掉原有字符串中的音标或者类似于音标的符号。

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

本文简书链接:http://www.jianshu.com/p/a28be7b7f1d3

时间: 2025-01-11 11:24:26

iOS 获取汉字的拼音 CFStringTransform的相关文章

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

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

原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种. 获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C# 获取汉字的拼音首字母 static void Main

IOS平台汉字转拼音方案

iOS/Mac OS X 汉字转拼音 网络流行的汉字转拼音方案是带一个拼音码表,速度快.其实Core Foundation也提供了一种方案,而且还带声调! Java代码   NSMutableString *ms = [[NSMutableString alloc] initWithString:@"我是中国人"]; if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinL

iOS获取字符串的拼音

//获取字符串的拼音 - (NSString *)phonetic { NSString *str = [self stringByReplacingOccurrencesOfString:@"-" withString:@" "]; NSMutableString *source = [str mutableCopy]; CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTr

iOS将汉字转换为拼音

将汉字转换为拼音 - (NSString *)chineseToPinyin:(NSString *)chinese withSpace:(BOOL)withSpace { CFStringRef hanzi = (__bridge CFStringRef)chinese; CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, hanzi); CFStringTransform(string, NULL, kCFString

java字符操作获取汉字的拼音以及其它经常使用工具

公司需求年年有,今年有点小特殊,哈哈. 忽然加了个需求,说要实现汉字转拼音查询. 在努力下写出来了,如今分享一下吧!.! /** * 汉字转拼音缩写 * * @param str * 要转换的汉字字符串 * @return String 拼音缩写 */ public static String getPYString(String str) { String tempStr = ""; for (int i = 0; i < str.length(); i++) { char c

iOS:汉字转拼音(类方法)

之前写了一篇关于汉字换拼音的,后来我个人用着用着也不舒服了,有点麻烦 在这里,我直接写一个类方法 点击下载源码 这是一个类,也就只有一个类方法,直接导入就能使用,但是我先声明输出结果,纯大写,汉字与汉字之间的拼音格式有空格 即: 哈哈    =>  HA HA 所占长度分别为: 2                   5 其他就没什么了

C# 获取汉字的拼音首字母

/// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns>相对应的汉语拼音首字母串</returns> public static string GetSpellCode(string CnStr) { string strTemp="&quo

java字符操作获取汉字的拼音以及其他常用工具

公司需求年年有,今年有点小特殊,哈哈. 忽然加了个需求,说要实现汉字转拼音查询. 在努力下写出来了,现在分享一下吧!!! /** * 汉字转拼音缩写 * * @param str * 要转换的汉字字符串 * @return String 拼音缩写 */ public static String getPYString(String str) { String tempStr = ""; for (int i = 0; i < str.length(); i++) { char c