Как удалить не числовые символы с номера телефона в 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;
}
Ответы
Ответ 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. Итак, разрешите все символы и подтвердите внутри кода.