如何删除电话号码非数字字符在Objective-C?(How to remove non numer

2019-07-20 17:01发布

这是我第一次做的iOS应用的尝试。

我使用人员选取索要了电话号码的用户,但是当它与下面的代码检索,我NSString *phone apears喜欢(0)111192222-2222。 我来自巴西,在这里为手机号码正确的面具(01111)92222-2222(9是可选的,一些数字有别人不一样)。 如何解决这个面具? 或完全删除吗?

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    ABMultiValueRef multiValue = ABRecordCopyValue(person, property);
    CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifier);
    NSString *phone = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multiValue, index);
    return NO;
}

Answer 1:

看到这个答案: https://stackoverflow.com/a/6323208/60488

基本上:

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];

对于你的情况,你可能想要删除字符“ - ”,“(”和“)”从字符集。



Answer 2:

您可以使用NSString和作为的NSMutableString的几个方法:

NSString *phone=@"(0) 111192222-2222";
//I'm from Brazil and here the correct mask for mobile phone numbers is (01111) 92222-2222
NSMutableString *editPhone=[NSMutableString stringWithString:[phone stringByReplacingOccurrencesOfString:@")" withString:@""]];
editPhone=[NSMutableString stringWithString:[editPhone stringByReplacingOccurrencesOfString:@" " withString:@""]];

[editPhone insertString:@") " atIndex:6];


NSLog(@"%@",editPhone);//(01111) 92222-2222


Answer 3:

我认为有办法解决这个问题:

  1. 使用NSRegularExpression删除任何东西,但数字。 你可以在这里看到或点击这里了解如何验证电话号码。
  2. 编写您自己扫描清除不需要的字符。 删除空格或删除所有,但数字 。
  3. 使用UITextFieldDelegate ,写textField:shouldChangeCharactersInRange:replacementString:方法,检查替换字符串,如果它是在0-9的范围内。

希望帮助。



Answer 4:

我会用正则表达式来验证电话号码,而不是杀死自己做一个自定义的键盘,它的功能可以通过iOS的更新而改变。 因此,让所有的字符和验证里面的代码。



文章来源: How to remove non numeric characters from phone number in objective-c?