iOS 通讯录空格
iOS 通讯录联系人出现 ASCII 码值为 160 的空格
NOTE:
这里的"空格"是指 在通讯录中取出的联系人中带有特殊空格
带有特殊空格的字符串 "测试8:182 1075 3001,测试4:182 1075 3001,测试1:180 1588 1111,测试9:182 1075 3001,测试5:182 1075 3001,测试2:176 1214 1111,测试10:182 1075 3001,测试6:182 1075 3001,测试11:182 1075 3001,测试7:182 1075 3001,测试3:182 1075 3001"
网上关于空格的解决方案(并没有什么卵用):
1. iOS 自带去除空格方法
NSString *cleaned = [[phoneNr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@""];
2. 字符串替换
NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];
3.直接把字符串转换成整形 (也不行)
["182 1075 3001" intValue]
这个方法 结果是 "182"
4.在字符串中提取数字 (方法听着可以,但是还是不行。翔太多)
第一种方法
NSScanner *scanner = [NSScanner scannerWithString:"182 1075 3001"];
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
int number;
[scanner scanInt:&number];
NSString *num=[NSString stringWithFormat:@"%d",number];
第二种方法
NSCharacterSet* nonDigits =[[NSCharacterSet decimalDigitCharacterSet] invertedSet];
int remainSecond =[[urlString stringByTrimmingCharactersInSet:nonDigits] intValue];
NSLog(@" num %d ",remainSecond);
结果是 182
************************************以上是网络的方法************************************************************
解决方案:
1. 把字符串转换成字符数组
2. 把160 的 ascii 剔除
3. 把剩余的 ascii 转换成字符串
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #d12f1b; background-color: #ffffff }
span.s1 { color: #703daa }
span.s2 { color: #000000 }
NSString *personPhone = @"182 1075 3001,182 1075 3001,182 1075 3001,182 1075 3001";
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000; background-color: #ffffff; min-height: 15.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #008400; background-color: #ffffff }
span.s1 { color: #703daa }
span.s2 { color: #3e1e81 }
span.s3 { color: #272ad8 }
span.s4 { color: #ba2da2 }
span.s5 { color: #000000 }
span.s6 { color: #d12f1b }
NSMutableArray *nonBreakingSpaceArr = [NSMutableArray arrayWithCapacity:0];
// 把字符串转换成字符数组
for (int i = 0; i < personPhone.length; i++) {
[nonBreakingSpaceArr addObject:[NSNumber numberWithInteger:[personPhone characterAtIndex:i]]];
}
// 这个 160 是一个特殊的空格 ascii 编码
if ([nonBreakingSpaceArr containsObject:[NSNumber numberWithInteger:160]]) {
NSMutableString *tempStr = [NSMutableString stringWithCapacity:0];
[nonBreakingSpaceArr enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (160 != [obj intValue]) {
// 把剩余的 ascii 转换成字符串
[tempStr appendString:[NSString stringWithFormat:@"%c",[obj intValue]]];
}
}];
personPhone = tempStr;
}
iOS 通讯录空格的更多相关文章
- Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端
Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端 本文同步更新地址: https://dotnet9.com/11520.html https:// ...
- iOS 通讯录-获取联系人属性
内容均来自关东升老师的ios开发指南 上一篇写了联系人框架的一些必须知道的知识 如今写一下读取联系人数据相关操作 要读取通讯录数据库 须要 创建通讯录对象 查询获取数据(全部或者部分) 获取通讯录某一 ...
- iOS通讯录相关知识-浅析
本文来自于:贞娃儿的博客 http://blog.sina.com.cn/zhenwawaer 在开发一些应用中,我们如果需要iPhone设备中的通讯录信息.或者,需要开发通讯录相关的一些功能.那 ...
- IOS 通讯录 (访问,添加,修改)
如何访问用户的通讯录 在iOS中,有2个框架可以访问用户的通讯录 AddressBookUI.framework 提供了联系人列表界面.联系人详情界面.添加联系人界面等 一般用于选择联系人 Add ...
- IOS通讯录的隐藏标签【电话】的特殊功能(在IOS11已失效)
这功能比较适合有强迫症,爱折腾的人哈!! 规范了通讯录标签,以后可以轻松的知道别人是用短号还是亲情网给你打电话. 如果是长号还可以显示归属地. 也许从IOS8(不太清楚)开始自带了号码归属地显示功能, ...
- iOS 通讯录编程【总结】
第一大块儿:读取通讯录 1.iOS 6以上系统,争取获取用户允许: 初始化的时候须要推断.设备是否授权 -(id)init{ self = [super init]; [self createdABH ...
- iOS 通讯录基础
iOS 6 之后应用訪问通讯录须要获得用户授权,而且仅仅授权一次,即使卸载了之后再安装.也不用再次授权. 开发通讯录应用须要两个框架: 1.ABAddressBook 主要用于提供訪问通讯录中 ...
- iOS通讯录整合,兼容iOS789写法,附demo
苹果的通讯录功能在iOS7,iOS8,iOS9 都有着一定的不同,iOS7和8用的是 <AddressBookUI/AddressBookUI.h> ,但是两个系统版本的代理方法有一些变化 ...
- iOS通讯录开发
场景一:直接选择一个联系人的电话号码 这里不需要先获取所有的联系人自己做联系人列表,直接使用系统自带的AddressBookUI/ABPeoplePickerNavigationController. ...
随机推荐
- HTML 自动、手动切换轮播 from:金水
.自动.手动切换轮播 body代码: <div id="tuijian"> <div class="pages" id="p1&qu ...
- 超简单的js评价小星星
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 检测Linux硬盘IO数据
首先安装sysstat(有些系统会预装): apt install sysstat 然后使用命令: iostat -x -k 2 x选项用于显示和io有关的扩展数据 k某些使用block为单位的字段改 ...
- [python学习笔记] python程序打包成exe文件
安装 pyinstaller pip3 install pyinstaller 命令 pyinstaller -F -w -i ../ui/icon.ico --clean ../Login.py 参 ...
- [js高手之路] 设计模式系列课程 - DOM迭代器(2)
如果你对jquery比较熟悉的话,应该用过 eq, first, last, get, prev, next, siblings等过滤器和方法.本文,我们就用迭代设计模式来封装实现,类似的功能 < ...
- 记录一次无聊的(经历了Nodejs -> Shell -> C)的探索问题过程
提出问题 在运行项目的服务器的git是1.8.3.1版本的时候,pm2 deploy 项目,服务器fetch不到最新的一次commit. 对于这个问题,在pm2的github也有issues讨论.然后 ...
- Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- 【京东账户】——Mysql/PHP/Ajax爬坑之用户登录
一.引言 实现京东的账户项目,功能模块之一,用户登录.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.依据功能创建库.表.记录 创建库:jd 创建表:登录表 添加三条记录 CREATE ...
- Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- 日期小demo
有个项目需求是做个在日期上选择的,就是这种: 网上看了几个日期的demo都太厚重了,移植起来太麻烦,然后打算自己写. 就先写个简化的demo看看,主要有几个关键点: 首先要根据当前日期获取这个月有几天 ...