iOS|iOS 11读取通讯录手机号“空格”bug
最近项目有点忙,好久都没有来更新博客了,俗话说好记性不如个烂笔头。今天也是抽出了一点时间来更新一下博客,来记录一下在自己在开发中遇到的坑,希望能帮到你。
读取通讯录实现
iOS9之前
AddressBookUI、AddressBook
iOS9以后
苹果爸爸在iOS 9之后更新了新的框架ContactsUI、Contacts
今天我们就不说实现的方法了,想必大家都知道怎么实现我就不多啰嗦了,我们今天来探讨一下iOS 11.0通讯录手机号“空格”bug。进入正题之前我们还是说一下事情的缘由,这一天我依旧向往常一样,在制造bug和修改bug的道路上忙碌着。测试的小姐姐有点不淡定的跟我我说不能话费充值。纳尼... 刚才做了一笔还是OK的这就倒下了.... 呃呃呃 ,立马我自己又是试了一下 NIMA竟然能行,查看了一下上送报文才发现手机号有“空格”。呵呵 那就 替换一下
stringByReplacingOccurrencesOfString:@"-" withString:@""
什么鬼 没有作用。
我试着将手机号转成utf8编码打印看了一下
文章图片
1523007154912.jpg
%C2%A0
问题就在这里这根本就不是一个空格,我们都知道utf8格式下空格是要被装换成%20
。问题找到了,接下来就是如何处理这个问题了。很简单 我们只需要将非数字的其它字符给过滤掉就行了。这里提供两种简单的实现方式
- 正则
- (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;
}
【iOS|iOS 11读取通讯录手机号“空格”bug】到此问题解决,希望能够帮到你。
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- ExcelPackage读取写入
- 接口|axios接口报错-参数类型错误解决
- iOS|iOS 笔记之_时间戳 + DES 加密
- iOS,打Framework静态库