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;

    }

    希望大家能用得上!

  • 相关阅读:
    Java开发中的23种设计模式详解(转)
    主表和从表
    MyBatis开发中解决返回字段不全的问题
    个人常用配置文件解析
    SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题
    mybatis之sql执行有数据但返回结果为null
    Hadoop window win10 基础环境搭建(2.8.1)
    什么水平算精通C++ Builder?
    Delphi中取得汉字的首字母(十分巧妙)
    全部的Windows消息对应值
  • 原文地址:https://www.cnblogs.com/feiyiban588/p/5596422.html
Copyright © 2011-2022 走看看