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]];
? ? ? ? if (strTmp!=nil) {
? ? ? ? ? ? strReturn=[strProc stringByAppendingString:strTmp];
? ? ? ? ? ? strProc=strReturn;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? strReturn=aArray[i];
? ? ? ? }
?? ? ? ?
? ? }
?? ?
? ? //獲取并返回首字母
? ? 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=nil;
? ? if (strArray.count!=0) {
? ? ? ? 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;
}
希望大家能用得上!(測試中發現全是數字的字符串會出錯,有修改了下,已更新)
轉載于:https://www.cnblogs.com/ashacher/p/5595667.html
總結
以上是生活随笔為你收集整理的iOS-如何返回某个字符串的拼音助记码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决git clone报错SSL cer
- 下一篇: 团队项目记录2