iOS 11讀取通訊錄手機(jī)號(hào)“空格”bug

最近項(xiàng)目有點(diǎn)忙,好久都沒有來更新博客了,俗話說好記性不如個(gè)爛筆頭。今天也是抽出了一點(diǎn)時(shí)間來更新一下博客,來記錄一下在自己在開發(fā)中遇到的坑,希望能幫到你。

讀取通訊錄實(shí)現(xiàn)

iOS9之前

AddressBookUI、AddressBook

iOS9以后

蘋果爸爸在iOS 9之后更新了新的框架ContactsUI、Contacts

今天我們就不說實(shí)現(xiàn)的方法了,想必大家都知道怎么實(shí)現(xiàn)我就不多啰嗦了,我們今天來探討一下iOS 11.0通訊錄手機(jī)號(hào)“空格”bug。

進(jìn)入正題之前我們還是說一下事情的緣由,這一天我依舊向往常一樣,在制造bug和修改bug的道路上忙碌著。測(cè)試的小姐姐有點(diǎn)不淡定的跟我我說不能話費(fèi)充值。納尼??... 剛才做了一筆還是OK的這就倒下了.... 呃呃呃 ,立馬我自己又是試了一下 NIMA竟然能行,查看了一下上送報(bào)文才發(fā)現(xiàn)手機(jī)號(hào)有“空格”。呵呵 那就 替換一下stringByReplacingOccurrencesOfString:@"-" withString:@""
什么鬼 沒有作用。

我試著將手機(jī)號(hào)轉(zhuǎn)成utf8編碼打印看了一下


1523007154912.jpg

%C2%A0 問題就在這里這根本就不是一個(gè)空格,我們都知道utf8格式下空格是要被裝換成%20。問題找到了,接下來就是如何處理這個(gè)問題了。很簡(jiǎn)單 我們只需要將非數(shù)字的其它字符給過濾掉就行了。

這里提供兩種簡(jiǎn)單的實(shí)現(xiàn)方式
  • 正則
- (NSString *)phoneNumberFormat:(NSString *)phoneNum{
    NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:@"[^\\d]" options:0 error:NULL];
    phoneNum = [regular stringByReplacingMatchesInString:phoneNum options:0 range:NSMakeRange(0, [phoneNum length]) withTemplate:@""];
    return phoneNum;
}
  • 字符串拼接
- (NSString *)phoneNumberFormat:(NSString *)phoneNum{
    NSString *tempStr = @"";
    for (int i = 0; i < phoneNum.length; i++){
        unichar _char = [phoneNum characterAtIndex:i];
        if (_char <= '9' && _char >= '0'){
            tempStr = [NSString stringWithFormat:@"%@%c",tempStr,_char];
        }
    }
    return tempStr;
}

到此問題解決,希望能夠幫到你。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容