zoukankan      html  css  js  c++  java
  • 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;

    }

    希望大家能用得上!

  • 相关阅读:
    [转]字符串相似度算法(编辑距离算法 Levenshtein Distance)
    [转]Earth Mover's Distance (EMD)
    [转]相似度计算常用方法综述
    小和问题和逆序对问题
    递归的理解
    验证方法是否正确——对数器
    CSS的几个核心概念(复盘大纲~)
    CSS3过渡
    CSS经典布局
    CSS3边框和圆角
  • 原文地址:https://www.cnblogs.com/feiyiban588/p/5596422.html
Copyright © 2011-2022 走看看