使用CFStringTransform进行汉字转拼音(可去掉声调)

使用方法:

NSMutableString *source = [sourceString mutableCopy];

CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformMandarinLatin, NO);

CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformStripDiacritics, NO);

return source;

在这个方法中kCFStringTransformMandarinLatin讲汉字转为拼音,再调用kCFStringTransformStripDiacritics去掉声调,

我在这里犯下的错误是没有把这两行都写上,而是只写一行,那么就早成只有第一行,那就只转出带声调的拼音,只写出第二行只会返回汉字,

后来我的领导对方法进行了优化,因为部分字会被转成错误的拼音所以完整方法是这样并且可以支持排序,

- (NSString *) phonetic:(NSString*)sourceString {

if ([sourceString isEqualToString:@""]) {

return sourceString;

}

NSMutableString *source = [sourceString mutableCopy];

CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformMandarinLatin, NO);

CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformStripDiacritics, NO);

if ([[(NSString *)sourceString substringToIndex:1] compare:@"长"] ==NSOrderedSame)

{

[source replaceCharactersInRange:NSMakeRange(0, 5)withString:@"chang"];

}

if ([[(NSString *)sourceString substringToIndex:1] compare:@"沈"] ==NSOrderedSame)

{

[source replaceCharactersInRange:NSMakeRange(0, 4)withString:@"shen"];

}

if ([[(NSString *)sourceString substringToIndex:1] compare:@"厦"] ==NSOrderedSame)

{

[source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"xia"];

}

if ([[(NSString *)sourceString substringToIndex:1] compare:@"地"] ==NSOrderedSame)

{

[source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"di"];

}

if ([[(NSString *)sourceString substringToIndex:1] compare:@"重"] ==NSOrderedSame)

{

[source replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"];

}

return source;

}

使用CFStringTransform进行汉字转拼音(可去掉声调)

时间: 2024-10-08 13:07:13

使用CFStringTransform进行汉字转拼音(可去掉声调)的相关文章

iOS 获取汉字的拼音 CFStringTransform

在ios开发中经常碰需要将汉字转成拼音的情况,以下就是我把汉字转成拼音的方法 代码实现 + (NSString *)transform:(NSString *)chinese{ //将NSString装换成NSMutableString NSMutableString *pinyin = [chinese mutableCopy]; //将汉字转换为拼音(带音标) CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFSt

swift 汉字转拼音

需要扩展一个String类的方法 extension String { func transformToPinYin() -> String { let mutableString = NSMutableString(string: self) //把汉字转为拼音 CFStringTransform(mutableString, nil, kCFStringTransformToLatin, false) //去掉拼音的音标 CFStringTransform(mutableString, ni

iOS获取汉字的拼音

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

IOS通讯录分区section汉字转拼音截取首字母

//汉字转拼音之后,截取首字母,并大写 -(NSString *)transformCharacter:(NSString*)sourceStr { //先将原字符串转换为可变字符串 NSMutableString *ms = [NSMutableString stringWithString:sourceStr]; if (ms.length) { //将汉字转换为拼音 CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStrin

Java_开源框架_JPinyin汉字转拼音的Java开源库

本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/50039339 1.介绍 JPinyin是一个汉字转拼音的Java开源类库,在PinYin4j的功能基础上做了一些改进.[JPinyin主要特性]1.准确.完善的字库:Unicode编码从4E00-9FA5范围及3007(〇)的20903个汉字中,JPinyin能转换除46个异体字(异体字不存在标准拼音)之外的所有汉字:2.拼音转换速度快:经测试,转换Unicode编

ios汉字转拼音首字母

ios汉字转拼音首字母 //获取拼音首字母(传入汉字字符串, 返回大写拼音首字母) - (NSString *)firstCharactor:(NSString *)aString { //转成了可变字符串 NSMutableString *str = [NSMutableString stringWithString:aString]; //先转换为带声调的拼音 CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransform

IOS平台汉字转拼音方案

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

Android 汉字转拼音之JNI篇

package com.tool.hz2py; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { protected Hz2py hz2py; @Override protected void onCreate(Bundle save

【笔记】关于汉字注音 汉字转拼音,首拼

最近想做一个快速搜索的功能,例如QQ通讯录通过数字键速查联系人 首先要把联系人姓名转化为拼音,然后再进行匹配 1.利用微软提供的拼音库,计算出汉字的拼音的方法,此方法支持多音字符 下载 Visual Studio International Pack类库,该类库扩展了.NET Framework对全球化软件开发的支持 下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99ae