码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 通讯录空格

时间:2017-10-26 20:56:42      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:sci   intvalue   back   break   city   value   hint   pst   nsstring   

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 转换成字符串

           NSString *personPhone = @"182 1075 3001,182 1075 3001,182 1075 3001,182 1075 3001";

 

           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 通讯录空格

标签:sci   intvalue   back   break   city   value   hint   pst   nsstring   

原文地址:http://www.cnblogs.com/zhaozhongpeng/p/7738945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!