我无法从iOS应用中的电话号码中删除空格。
这是我的代码。
ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
for (CFIndex iPhone = 0; iPhone < ABMultiValueGetCount(multiPhones); iPhone++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, iPhone);
NSString *phoneNumber = (__bridge NSString *) phoneNumberRef;
if (phoneNumber == nil) {
phoneNumber = @"";
}
if (phoneNumber.length == 0) continue;
// phone number = (217) 934-3234
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"(" withString:@""];
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@")" withString:@""];
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"-" withString:@""];
phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
// phone number = 217 9343234
[phoneNumbers addObject:phoneNumber];
}
我希望没有空白。但它没有从电话号码中删除。 我该怎么办?请帮我。感谢
答案 0 :(得分:0)
你可以做一些比你目前使用NSCharacterSet
更简单的事情。方法如下:
NSCharacterSet
定义了一组字符。有一些标准的,例如decimalDigitsCharacterSet
和alphaNumericCharacterSet
。
还有一个名为invertedSet
的简洁方法,它返回一个字符集,其中包含当前字符中包含的所有字符 not 。现在,我们只需要一点信息。
NSString
有一个名为componentsSeparatedByCharactersInSet:
的方法,它会返回一个NSArray
字符串部分,在您提供的字符集中的字符周围分解。
NSArray
有一个补充函数componentsJoinedWithString:
,您可以使用它将数组元素(后面)转换为字符串。看看这是怎么回事?
首先,定义一个我们想要包含在最终输出中的字符集:
NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet];
现在,获取其他所有内容。
NSCharacterSet *illegalCharacters = [digits invertedSet]
一旦我们拥有了我们想要的字符集,我们就可以打破字符串并重新构建它:
NSArray *components = [phoneNumber componentsSeperatedByCharactersInSet:illegalCharacters];
NSString *output = [components componentsJoinedByString:@""];
这应该给你正确的输出。四行,你已经完成了:
NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet];
NSCharacterSet *illegalCharacters = [digits invertedSet];
NSArray *components = [phoneNumber componentsSeparatedByCharactersInSet:illegalCharacters];
NSString *output = [components componentsJoinedByString:@""];
你可以使用whitespaceCharacterSet
做一些类似于修剪字符串空格的东西。
NSHipster也有a great article这个。
修改强>
如果要包含其他符号,例如+
前缀或括号,则可以使用characterSetWithCharactersInString:
创建自定义字符集。如果您有两个字符集,例如十进制数字和您创建的自定义字符集,则可以使用NSMutableCharacterSet
修改必须包含其他字符的字符集。