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 通讯录空格的更多相关文章

  1. Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端

    Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端 本文同步更新地址: https://dotnet9.com/11520.html https:// ...

  2. iOS 通讯录-获取联系人属性

    内容均来自关东升老师的ios开发指南 上一篇写了联系人框架的一些必须知道的知识 如今写一下读取联系人数据相关操作 要读取通讯录数据库 须要 创建通讯录对象 查询获取数据(全部或者部分) 获取通讯录某一 ...

  3. iOS通讯录相关知识-浅析

    本文来自于:贞娃儿的博客  http://blog.sina.com.cn/zhenwawaer  在开发一些应用中,我们如果需要iPhone设备中的通讯录信息.或者,需要开发通讯录相关的一些功能.那 ...

  4. IOS 通讯录 (访问,添加,修改)

      如何访问用户的通讯录 在iOS中,有2个框架可以访问用户的通讯录 AddressBookUI.framework 提供了联系人列表界面.联系人详情界面.添加联系人界面等 一般用于选择联系人 Add ...

  5. IOS通讯录的隐藏标签【电话】的特殊功能(在IOS11已失效)

    这功能比较适合有强迫症,爱折腾的人哈!! 规范了通讯录标签,以后可以轻松的知道别人是用短号还是亲情网给你打电话. 如果是长号还可以显示归属地. 也许从IOS8(不太清楚)开始自带了号码归属地显示功能, ...

  6. iOS 通讯录编程【总结】

    第一大块儿:读取通讯录 1.iOS 6以上系统,争取获取用户允许: 初始化的时候须要推断.设备是否授权 -(id)init{ self = [super init]; [self createdABH ...

  7. iOS 通讯录基础

    iOS  6 之后应用訪问通讯录须要获得用户授权,而且仅仅授权一次,即使卸载了之后再安装.也不用再次授权. 开发通讯录应用须要两个框架: 1.ABAddressBook    主要用于提供訪问通讯录中 ...

  8. iOS通讯录整合,兼容iOS789写法,附demo

    苹果的通讯录功能在iOS7,iOS8,iOS9 都有着一定的不同,iOS7和8用的是 <AddressBookUI/AddressBookUI.h> ,但是两个系统版本的代理方法有一些变化 ...

  9. iOS通讯录开发

    场景一:直接选择一个联系人的电话号码 这里不需要先获取所有的联系人自己做联系人列表,直接使用系统自带的AddressBookUI/ABPeoplePickerNavigationController. ...

随机推荐

  1. Python接口测试自动化说明及代码实例:含get、post、put、delete等方法

    一.接口说明文档 环境准备: 安装火狐 安装插件: httprequester https://addons.mozilla.org/en-US/firefox/addon/httprequester ...

  2. Servlet第七篇【Cookie和Session的区别、应用】

    Session和Cookie的区别 从存储方式上比较 Cookie只能存储字符串,如果要存储非ASCII字符串还要对其编码. Session可以存储任何类型的数据,可以把Session看成是一个容器 ...

  3. 短视频图像处理 OpenGL ES 实践

    2017年,短视频正以其丰富的内容表现力和时间碎片化的特点,快速崛起,而短视频最具可玩性之处就在支持人脸识别的动态贴图和各种不同效果的美颜.滤镜等.那短视频动态贴纸.滤镜.美颜等功能究竟是如何实现的呢 ...

  4. Springboot与Mybatis整合

    最近自己用springboot和mybatis做了整合,记录一下: 1.先导入用到的jar包 <dependency> <groupId>org.springframework ...

  5. Download the Hibernate Tools

    首先去官网上下载最新版本的Hibernate Tools JBoss Tools 4.5.0.Final Requirements: Java 8 and Eclipse Oxygen 4.7 有 4 ...

  6. EOutOfResources字符异常

    近日,用Delphi编程时,遇到一个莫名其妙的异常:EOutOfResources,这是一个可以重复再现的异常.开始以为是程序中创建的对象太多,导致占用了过多的资源,引起了这个异常.于是在代码中将许多 ...

  7. js中+号的另外一种用法

    JavaScript中可以在某个元素前使用 ‘+’ 号,这个操作是将该元素转换成Number类型,如果转换失败,那么将得到 NaN. 所以 +new Date 将会调用 Date.prototype ...

  8. 我的Spring学习记录(四)

    虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...

  9. Java常用异常整理

    填坑,整理下Java的常用异常.正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系.常用异常类. ...

  10. Clojure——学习迷宫生成

    背景 初学clojure,想着看一些算法来熟悉clojure语法及相关算法实现. 找到一个各种语言生成迷宫的网站:http://rosettacode.org/wiki/Maze_generation ...