Как удалить не числовые символы с номера телефона в objective-c? - программирование
Подтвердить что ты не робот

Как удалить не числовые символы с номера телефона в objective-c?

Это моя первая попытка сделать приложение ios.

Я использую сборщик людей, чтобы спросить у пользователя номер телефона, но когда он извлекается с помощью кода ниже, мой NSString *phone появляется (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;
}
4b9b3361

Ответ 1

Смотрите этот ответ: fooobar.com/questions/158891/...

В принципе:

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

В вашем случае вы можете удалить символы "-", "(" и ")" из набора символов.

Ответ 2

Вы можете использовать несколько методов NSString и NSMutableString как:

NSString *[email protected]"(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

Ответ 3

Я думаю, что есть способы решить эту проблему:

  • Используя NSRegularExpression, удалите что-либо, кроме цифр. Вы можно здесь или здесь, чтобы узнать, как подтвердить номер телефона.
  • Создайте собственный сканер, чтобы удалить символы, которые вам не нужны. Удалить пробелы или удалить все, кроме номеров.
  • Используйте UITextFieldDelegate, напишите textField:shouldChangeCharactersInRange:replacementString:, проверьте строку замены, если она находится в диапазоне от 0 до 9.

Надежда помогает.

Ответ 4

Я бы использовал регулярное выражение для проверки номера телефона вместо того, чтобы убить себя, чтобы создать пользовательскую клавиатуру, какие функции можно изменить с помощью обновлений iOS. Итак, разрешите все символы и подтвердите внутри кода.