iOS-如何返回某個字串的拼音助記碼,ios-拼音

來源:互聯網
上載者:User

iOS-如何返回某個字串的拼音助記碼,ios-拼音

    我也是看了網上的一個範例程式碼後,在它的基礎上進行的修改。因為項目上會用到,我相信很多人的項目上也會用到。所以實現後,也趕緊分享出來,希望後來人不需要花費時間了。

提示:這裡用到了Regex,使用了一個第三方開源的組件: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];

    

    //根據指定的Regex將拼音字串轉換成各個子字串數組

    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;

}

希望大家能用得上!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.