快速汉字转拼音

来源:互联网 发布:apriori算法 置信度 编辑:程序博客网 时间:2024/06/05 18:16

第一阶段:git开源工具:PinYin4Objc

第二阶段:网友推荐方法

- (NSString *)transformToPinyin {    NSMutableString *mutableString = [NSMutableString stringWithString:self];    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false);    return mutableString;}

第三阶段: 正则表达式优先过滤英文数字特殊字符等
- (NSString *)transformToPinyin {    NSMutableString *mutableString = [NSMutableString stringWithString:self];    BOOL isNeedTransform = ![self isAllEngNumAndSpecialSign];    if (isNeedTransform) {        CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);        CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false);    }    return mutableString;} - (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];    BOOL isNeedTransform = ![self isAllEngNumAndSpecialSign];    if (isNeedTransform) {        CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);        CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripCombiningMarks, false);    }    return mutableString;} - (BOOL)isAllEngNumAndSpecialSign {    NSString *regularString = @"^[A-Za-z0-9\\p{Z}\\p{P}]+$";    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regularString];    return [predicate evaluateWithObject:self];}

第五阶段:终极优化版

- (NSString *)transformToPinyin {    NSMutableString *mutableString = [NSMutableString stringWithString:self];    CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false);    mutableString = (NSMutableString *)[mutableString stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]];    return mutableString;}

0 0
原创粉丝点击