如何从iOS中的电话号码中删除空格

时间:2016-03-30 15:49:56

标签: ios objective-c

我无法从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];
        }

我希望没有空白。但它没有从电话号码中删除。 我该怎么办?请帮我。感谢

1 个答案:

答案 0 :(得分:0)

你可以做一些比你目前使用NSCharacterSet更简单的事情。方法如下:

NSCharacterSet定义了一组字符。有一些标准的,例如decimalDigitsCharacterSetalphaNumericCharacterSet

还有一个名为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修改必须包含其他字符的字符集。