中文转拼音

来源:互联网 发布:tcl语言有什么用 知乎 编辑:程序博客网 时间:2024/06/03 19:47

在项目中,需要根据文字或者文字的拼音进行模糊搜索;用过很多第三方库来转化,最后还是感觉Pinyin比较好用;同时汉字中夹杂英文字母也能转。

下面介绍下Pinyin的使用:

1、使用Pinyin之前需要先引入:

#import "pinyin.h"
2、获取某个中文语段的首个文字的拼音首字母:

+(NSString*)getFirstLetterFromZh:(NSString*)zh{    NSString *transformedStr;//转化了的数据    NSString *originStr=[NSString stringWithFormat:@"%@",zh];    if(originStr==nil){        originStr=@"";    }    if(![originStr isEqualToString:@""]){        NSString *pinYinResult=[NSString string];        NSString *singlePinyinLetter=[[NSString stringWithFormat:@"%c",pinyinFirstLetter([originStr characterAtIndex:0])]uppercaseString];        pinYinResult=[pinYinResult stringByAppendingString:singlePinyinLetter];        transformedStr=pinYinResult;    }else{        transformedStr=@"";    }    return transformedStr;    /*     //转成了可变字符串     NSMutableString *str = [NSMutableString stringWithString:zh];     //先转换为带声调的拼音     CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);     //再转换为不带声调的拼音     CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);     //转化为大写拼音     NSString *pinYin = [str capitalizedString];     //获取并返回首字母     return [pinYin substringToIndex:1];     */}

3、获取中文字段的所有文字的拼音首字母:

+(NSString *)getAllFirstLetterFromZh:(NSString *)zh{    NSString *transformedStr;//转化了的数据    NSString *originStr=[NSString stringWithFormat:@"%@",zh];    if(originStr==nil){        originStr=@"";    }    if(![originStr isEqualToString:@""]){        NSString *firstLetters=[[NSString alloc]init];        for(int i = 0; i<originStr.length; i++) {            NSRange range=NSMakeRange(i, 1);            NSString *tmpStr=[originStr substringWithRange:range];                        NSString *pinYinResult=[NSString string];            NSString *singlePinyinLetter=[[NSString stringWithFormat:@"%c",pinyinFirstLetter([tmpStr characterAtIndex:0])]uppercaseString];            pinYinResult=[pinYinResult stringByAppendingString:singlePinyinLetter];            // 找出所有的大写字母            firstLetters = [firstLetters stringByAppendingFormat:@"%@",pinYinResult];        }        transformedStr=firstLetters;    }else{        transformedStr=@"";    }    return transformedStr;        /*     //转成了可变字符串     NSMutableString *str = [NSMutableString stringWithString:zh];     //先转换为带声调的拼音     CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);     //再转换为不带声调的拼音     CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);     //转化为大写拼音     NSString *pinYin = [str capitalizedString];          NSMutableString *pinYinStr = [NSMutableString stringWithString:pinYin];     NSString *firstLetters=[[NSString alloc]init];     for (int i = 0; i<pinYinStr.length; i++) {     unichar characterOfStr = [pinYinStr characterAtIndex:i];     // 找出所有的大写字母     if(characterOfStr<= 'Z' && characterOfStr>='A') {     firstLetters = [firstLetters stringByAppendingFormat:@"%C",characterOfStr];     }     }     //获取并返回首字母     return firstLetters;     */}

4、在某些情况下,需要判断一个字符串是否包含中文:

+(BOOL)isChinese:(NSString *)str{    for(int i=0; i< [str length];i++){        int a = [str characterAtIndex:i];        if( a > 0x4e00 && a < 0x9fff){            return YES;        }    }    return NO;}


Pinyin下载地址:

http://download.csdn.net/detail/guobing19871024/9684070



0 0
原创粉丝点击