在我的应用程序中,我试图检索联系人号码列表并对它们进行操作。我发现,每当我添加新联系人(升级到iOS 7后),新联系人的格式已经改变,因为新增的数字中有空格。
使用普通的替换方法无法去除这些空格。
这些是真正的空格还是什么?我的目标是获得不带空格的电话号码。
例如,如果号码是1 818 323 323 323
,我想要得到1818323323323
我认为这不仅仅是除去“空格”,而是只留下十进制字符。这段代码对我来说做到了这一点:
phoneNumberString = [[phoneNumberString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
这将取出除数字0-9以外的所有内容。
Swift 4.1:
phoneNumberString = phoneNumberString.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
试试这个:
NSString *cleaned = [[phoneNr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@""];
\U00A0
。 - Andrei Konstantinov一些iOS7的电话号码使用非断空格进行编码。尝试以下操作:
NSString* stringFormatted = [phoneNumber stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];
另一个(非常灵活的)选项是使用正则表达式。这允许您保留 + 或任何其他您想要保留的字符。
let numberFromAddressBook = "+1 818 323 323 323"
let cleanNumber = numberFromAddressBook.stringByReplacingOccurrencesOfString("[^0-9+]", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range:nil)
"+1818323323323"
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"." withString:@""];
NSMutableCharacterSet *phoneNubmerCharacterSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"+"];
[phoneNubmerCharacterSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]];
NSString* phoneString = [[phoneString componentsSeparatedByCharactersInSet:[phoneNubmerCharacterSet invertedSet]] componentsJoinedByString:@""];
我对回答者的答案进行了小幅调整,以便有人想保留数字开头的+号。
如果您想在去除空格后保留加号,我做了这个小修改。
Boolean shouldAddPlus = NO;
if([[phoneNumber substringToIndex:1] isEqualToString:@"+"])
{
shouldAddPlus = YES;
}
phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
if(shouldAddPlus)
phoneNumber = [base stringByAppendingString:phoneNumber];
NSString *clean = [dirty stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];