標籤: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 通訊錄空格