Intereting Posts
Объект, инициализированный в «init», не может быть доступен в «viewDidLoad» * AppName * не имеет архитектуры, которую может выполнить iPhone 5 Результаты SwiftyJson в UITableView неправильный порядок Приложение iOS разбивается на CTFrameDraw самый простой способ однозначно идентифицировать пользователя приложения iphone Мой пользовательский класс имеет все те же переменные изменение языка приложения с помощью кнопок во время выполнения Пример запроса в Touchpose в github в iOS Перенести запрос mysql в NSPredicate Как iCloud отправляет уведомление в мое приложение при прослушивании NSPersistentStoreDidImportUbiquitousContentChangesNotification Формы текстур металла как удалить пользователя чата из списка в другом конце в open fire xmpp в ios Как вычислить кадр UIView перед преобразованием? быстрое обновление, endRefreshing не работает obj-c не может найти индекс из искаженного массива / неправильного вывода

Как мне форматировать текст UITextfield, который является номером телефона, в американском стиле?

Скажем, у меня есть этот номер 1234567890

и я хочу его в этом формате (xxx) xxx-xxxx

Поэтому на дисплее мне бы хотелось, чтобы он отображался как (123) 456-7890

Как я могу это достичь?

Должен ли я использовать какое-то регулярное выражение в текстовом поле?

Спасибо за ваше время

Попробуйте что-то вроде этого:

NSCharacterSet *digits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; NSString *filtered = [[[textField text] componentsSeparatedByCharactersInSet: digits] componentsJoinedByString: @""]; if ([filtered length] == 11) { NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(1, 3)], [filtered substringWithRange: NSMakeRange(4, 3)], [filtered substringWithRange: NSMakeRange(7, 4)]]; [textField setText: formatted]; } else if ([filtered length] == 10) { NSString *formatted = [NSString stringWithFormat: @"(%@) %@-%@", [filtered substringWithRange: NSMakeRange(0, 3)], [filtered substringWithRange: NSMakeRange(3, 3)], [filtered substringWithRange: NSMakeRange(6, 4)]]; [textField setText: formatted]; } 

Если вы используете Swift:

 let phoneNum = activity["phoneNumber"] as String let digits = NSCharacterSet.decimalDigitCharacterSet().invertedSet as NSCharacterSet let filtered1 = phoneNum.componentsSeparatedByCharactersInSet(digits) as NSArray let filtered = filtered1.componentsJoinedByString("") as NSString if filtered.length == 11 { let formatted = NSString(format: "(%@) %@-%@", filtered.substringWithRange(NSMakeRange(1, 3)), filtered.substringWithRange(NSMakeRange(4, 3)), filtered.substringWithRange(NSMakeRange(7, 4))) as NSString phoneNumberField.text = formatted } else if filtered.length == 10 { let formatted = NSString(format: "(%@) %@-%@", filtered.substringWithRange(NSMakeRange(0, 3)), filtered.substringWithRange(NSMakeRange(3, 3)), filtered.substringWithRange(NSMakeRange(6, 4))) as NSString phoneNumberField.text = formatted } 

Попробуйте использовать RMPhoneFormat .

На странице GitHub: «RMPhoneFormat предоставляет простой в использовании класс для форматирования и проверки номеров телефонов в приложениях iOS. Форматирование должно копировать то, что вы увидите в приложении« Контакты »для того же номера телефона».