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. phpcms总结(转)

    转自:http://www.cnblogs.com/zuzwn/p/3649536.html文件目录结构 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – config ...

  2. bookStore第二篇【图书模块、前台页面】

    图书模块 分析 在设计图书管理的时候,我们应该想到:图书和分类是有关系的.一个分类可以对应多本图书. 为什么要这样设计?这样更加人性化,用户在购买书籍的时候,用户能够查看相关分类后的图书,而不是全部图 ...

  3. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...

  4. Struts第八篇【资源国际化、对比JSP的资源国际化】

    资源国际化 我们在学JSTL标签的时候就涉及到了资源国际化,,,但是呢,在JSP的章节我并没有写博文来讲解怎么弄-.一方面感觉JSP的资源国际化好麻烦,另一方面是感觉用的地方很少-..因此就没有深入去 ...

  5. .net 各种序列化方式效率对比

    在服务与服务之间传输的是二进制数据,而在此之前有多种方法将数据内容进行序列化来减小数据传递大小,现针对于目前主流的几种序列化方式做了简单数据统计对比. 先做下简单介绍↓↓↓ 1.protobuf-ne ...

  6. 【概率论与数理统计】小结4 - 一维连续型随机变量及其Python实现

    注:上一小节总结了离散型随机变量,这个小节总结连续型随机变量.离散型随机变量的可能取值只有有限多个或是无限可数的(可以与自然数一一对应),连续型随机变量的可能取值则是一段连续的区域或是整个实数轴,是不 ...

  7. python基础之五大标准数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  8. .Net Core2.0 + Nginx + CentOS 部署

    准备把项目往Linux上迁移,整个流程跑了一下,也遇到无数个坑...以下为亲测并修改后的完整流程... 安装ZIP yum install -y unzip zip Putty:WINDOWS上传文件 ...

  9. 11 Linear Models for Classification

    一.二元分类的线性模型 线性分类.线性回归.逻辑回归 可视化这三个线性模型的代价函数 SQR.SCE的值都是大于等于0/1的 理论分析上界 将回归应用于分类 线性回归后的参数值常用于pla/pa/lo ...

  10. DotNetCore跨平台~linux上还原自主nuget包需要注意的问题

    问题的产生的背景 由于我们使用了jenkins进行部署(jenkins~集群分发功能和职责处理),而对于.net core项目来说又是跨平台的,所以对它的项目拉取,包的还原,项目的编译和项目的发布都是 ...