iOS-如何返回某个字符串的拼音助记码_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS-如何返回某个字符串的拼音助记码

iOS-如何返回某个字符串的拼音助记码

 2016/6/19 5:31:32  菲哥-sofapig  程序员俱乐部  我要评论(0)
  • 摘要:我也是看了网上的一个示例代码后,在它的基础上进行的修改。因为项目上会用到,我相信很多人的项目上也会用到。所以实现后,也赶紧分享出来,希望后来人不需要花费时间了。提示:这里用到了正则表达式,使用了一个第三方开源的组件:RegexKitLite(该组件如何使用网上教程很多)#pragmamark-获取拼音首字母(传入汉字字符串,返回小写拼音首字母)+(NSString*)pinYingFirstCharactorStr:(NSString*)aString
  • 标签:iOS 字符串

    我也是看了网上的一个示例代码后,在它的基础上进行的修改。因为项目上会用到,我相信很多人的项目上也会用到。所以实现后,也赶紧分享出来,希望后来人不需要花费时间了。

提示:这里用到了正则表达式,使用了一个第三方开源的组件:RegexKitLite (该组件如何使用网上教程很多)

 

#pragma mark - 获取拼音首字母(传入汉字字符串, 返回小写拼音首字母)

+(NSString *)pinYingFirstCharactorStr:(NSString *)aString

{

    //转成了可变字符串

    NSMutableString *str = [NSMutableString stringWithString:aString];

    //先转换为带声调的拼音

    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);

    //再转换为不带声调的拼音

    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);

    //转化为小写拼音

    NSString *pinYin = [str lowercaseString];

    

    //根据指定的正则表达式将拼音字串转换成各个子字符串数组

    NSString *regexString = @"\\s";  //使用的拆分间隔的正则符号是空格

    NSArray* aArray=[pinYin componentsSeparatedByRegex:regexString];  //进行拆分

    

    //遍历字符串数组,拼接首字母

    NSString* strReturn;

    NSString* strProc = @"";

    for (int i=0; i<aArray.count; i++) {

        

        //针对子串可能有数字进一步处理

        NSString* strTmp=[CRGOtherHelper firstReplaceInNumberStr:aArray[i]];

        strReturn=[strProc stringByAppendingString:strTmp];

        strProc=strReturn;

    }

    

    //获取并返回首字母

    return strReturn;

}

 

//对传入的字符串进行按数字间隔拆分到一个新的子数组中,对子数组中的非空成员取首字母得到一个临时字符。

//然后用这个临时字符去替换原有的数组成员中的字符串的对应部分(查找方式是比对先前拆分的成员)

+(NSString*)firstReplaceInNumberStr:(NSString*)waitProcStr

{

    NSString* strResult=nil;

    NSString* strWait=[[waitProcStr copy] autorelease];

    

    //找字符串

    NSString *regexString=@"[0-9]";

 

    //进一步拆分成子串数组

    NSArray* strArray=[waitProcStr componentsSeparatedByRegex:regexString];  //进行拆分

    NSArray* strCopy=[strArray copy];

    

    for (int j=0; j<strArray.count; j++) {

        

        if (![(NSString*)strArray[j] isEqualToString:@""])

        {

            //取首字母

            NSString* fistChar=[strArray[j] substringToIndex:1];

            

            //部分替换

            strResult=[strWait stringByReplacingOccurrencesOfRegex:strCopy[j] withString:fistChar];

            strWait=strResult;

        }

    }

    

    return strResult;

}

希望大家能用得上!

发表评论
用户名: 匿名