在iOS中汉语转拼音可以使用系统提供的方法,也可以使用第三方库来实现,但是网上说使用系统方法实现的话性能会比较差,此处只是提供方法,至于选择使用哪种方法,自己看情况而定。
1、系统方法
主要使用到了方法CFStringTransform
NSString *hanziText = @"我是汉字";
if ([hanziText length]) {
NSMutableString *ms = [[NSMutableString alloc] initWithString:hanziText];
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {
NSLog(@"pinyin: %@", ms);
}
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {
NSLog(@"pinyin: %@", ms);
}
}
2、第三方库 PinYin4Objc
NSString *sourceText=@"我是汉字";
HanyuPinyinOutputFormat *outputFormat=[[HanyuPinyinOutputFormat alloc] init];
[outputFormat setToneType:ToneTypeWithoutTone];
[outputFormat setVCharType:VCharTypeWithV];
[outputFormat setCaseType:CaseTypeLowercase];
[PinyinHelper toHanyuPinyinStringWithNSString:sourceText
withHanyuPinyinOutputFormat:outputFormat
withNSString:@" "
outputBlock:^(NSString *pinYin) {
_outputTv.text=pinYin; //update ui
}];
上面的方法都是用来将汉字转成拼音的,如果需要按照汉字的拼音排序的话,可以按照上面转换之后的拼音排序即可。
但实际上,如果不需要转换之后的拼音的话,可以直接使用iOS系统提供的方法实现排序,最关键的方法为localizedCompare方法。
localizedCompare
具体说明可以参考
iOS数组按中文关键字以字母序排序
参考链接:
iOS-使用CFStringTransform将汉字转换为拼音