本篇文章主要介绍了"iOS开发中如何更快的实现汉字转拼音",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下:
原文:http://www.olinone.com/?p=131最近在做字符串转拼音的速度优化,现分享给大家,各位朋友有什么想法可以给我留言,谢谢!第一阶段:g...
原文:http://www.olinone.com/?p=131
最近在做字符串转拼音的速度优化,现分享给大家,各位朋友有什么想法可以给我留言,谢谢!
第一阶段:git开源工具:PinYin4Objc
第二阶段:网友推荐方法
| -(NSString*)transformToPinyin{
NSMutableString*mutableString=[NSMutableString stringWithString:self];
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformToLatin,false);
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformStripDiacritics,false);
returnmutableString;
}
第三阶段: 正则表达式优先过滤英文数字特殊字符等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-(NSString*)transformToPinyin{
NSMutableString*mutableString=[NSMutableString stringWithString:self];
BOOLisNeedTransform=![selfisAllEngNumAndSpecialSign];
if(isNeedTransform){
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformToLatin,false);
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformStripDiacritics,false);
}
returnmutableString;
}
-(BOOL)isAllEngNumAndSpecialSign{
NSString*regularString=@"^[A-Za-z0-9\\p{Z}\\p{P}]+$";
NSPredicate*predicate=[NSPredicate predicateWithFormat:@"SELF
MATCHES %@",regularString];
return[predicate evaluateWithObject:self];
}
|
第四阶段:参考http://nshipster.com/cfstringtransform/
| -(NSString*)transformToPinyin{
NSMutableString*mutableString=[NSMutableString stringWithString:self];
BOOLisNeedTransform=![selfisAllEngNumAndSpecialSign];
if(isNeedTransform){
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformToLatin,false);
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformStripCombiningMarks,false);
}
returnmutableString;
}
-(BOOL)isAllEngNumAndSpecialSign{
NSString*regularString=@"^[A-Za-z0-9\\p{Z}\\p{P}]+$";
NSPredicate*predicate=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",regularString];
return[predicate evaluateWithObject:self];
}
第五阶段:终极优化版
1
2
3
4
5
6
-(NSString*)transformToPinyin{
NSMutableString*mutableString=[NSMutableString stringWithString:self];
CFStringTransform((CFMutableStringRef)mutableString,NULL,kCFStringTransformToLatin,false);
mutableString=(NSMutableString*)[mutableString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocalecurrentLocale]];
returnmutableString;
}
|
Demo移步https://github.com/panghaijiao/PHJTransformPinyinDemo,喜欢请点赞,感谢你的来访!
以上就介绍了iOS开发中如何更快的实现汉字转拼音,包括了方面的内容,希望对IOS开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_139098.html
相关图片
相关文章