iOS-如何返回某个字符串的拼音助记码
? ? 我也是看了網(wǎng)上的一個(gè)示例代碼后,在它的基礎(chǔ)上進(jìn)行的修改。因?yàn)轫?xiàng)目上會(huì)用到,我相信很多人的項(xiàng)目上也會(huì)用到。所以實(shí)現(xiàn)后,也趕緊分享出來(lái),希望后來(lái)人不需要花費(fèi)時(shí)間了。
提示:這里用到了正則表達(dá)式,使用了一個(gè)第三方開(kāi)源的組件:RegexKitLite (該組件如何使用網(wǎng)上教程很多)
?
?
#pragma mark - 獲取拼音首字母(傳入漢字字符串, 返回小寫(xiě)拼音首字母)
+(NSString *)pinYingFirstCharactorStr:(NSString *)aString
{
? ? //轉(zhuǎn)成了可變字符串
? ? NSMutableString *str = [NSMutableString stringWithString:aString];
? ? //先轉(zhuǎn)換為帶聲調(diào)的拼音
? ? CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);
? ? //再轉(zhuǎn)換為不帶聲調(diào)的拼音
? ? CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);
? ? //轉(zhuǎn)化為小寫(xiě)拼音
? ? NSString *pinYin = [str lowercaseString];
?? ?
? ? //根據(jù)指定的正則表達(dá)式將拼音字串轉(zhuǎn)換成各個(gè)子字符串?dāng)?shù)組
? ? NSString *regexString = @"\\s";? //使用的拆分間隔的正則符號(hào)是空格
? ? NSArray* aArray=[pinYin componentsSeparatedByRegex:regexString];? //進(jìn)行拆分
?? ?
? ? //遍歷字符串?dāng)?shù)組,拼接首字母
? ? NSString* strReturn=@"";
? ? NSString* strProc = @"";
? ? for (int i=0; i<aArray.count; i++) {
?? ? ? ?
? ? ? ? //針對(duì)子串可能有數(shù)字進(jìn)一步處理
? ? ? ? NSString* strTmp=[CRGOtherHelper firstReplaceInNumberStr:aArray[i]];
? ? ? ? if (strTmp!=nil) {
? ? ? ? ? ? strReturn=[strProc stringByAppendingString:strTmp];
? ? ? ? ? ? strProc=strReturn;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? strReturn=aArray[i];
? ? ? ? }
?? ? ? ?
? ? }
?? ?
? ? //獲取并返回首字母
? ? return strReturn;
}
?
//對(duì)傳入的字符串進(jìn)行按數(shù)字間隔拆分到一個(gè)新的子數(shù)組中,對(duì)子數(shù)組中的非空成員取首字母得到一個(gè)臨時(shí)字符。
//然后用這個(gè)臨時(shí)字符去替換原有的數(shù)組成員中的字符串的對(duì)應(yīng)部分(查找方式是比對(duì)先前拆分的成員)
+(NSString*)firstReplaceInNumberStr:(NSString*)waitProcStr
{
? ? NSString* strResult=nil;
? ? NSString* strWait=[[waitProcStr copy] autorelease];
?? ?
? ? //找字符串
? ? NSString *regexString=@"[0-9]";
?
? ? //進(jìn)一步拆分成子串?dāng)?shù)組
? ? NSArray* strArray=[waitProcStr componentsSeparatedByRegex:regexString];? //進(jìn)行拆分
? ? 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;
}
希望大家能用得上!(測(cè)試中發(fā)現(xiàn)全是數(shù)字的字符串會(huì)出錯(cuò),有修改了下,已更新)
轉(zhuǎn)載于:https://www.cnblogs.com/ashacher/p/5595667.html
總結(jié)
以上是生活随笔為你收集整理的iOS-如何返回某个字符串的拼音助记码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决git clone报错SSL cer
- 下一篇: 团队项目记录2