Intereting Posts
Как реализовать BroadcastReceiver в классе обслуживания в Android? График Api не получает местоположение от Facebook SDK в Android Текст в текстовом режиме слайд-шоу в Android 3.0 Не удалось отправить команду ATZ в ELM 327 после установления соединения с ELM327 в андроиде Можно ли аутентифицировать пользователя Google (зарегистрированного на устройстве Android) на моем сервере, используя auth_token, полученную форму Google? SetInterval эквивалент в Android / Java? Как получить идентификатор Android Bundle / Packager Анимация для Android: как увеличить высоту просмотра? Метод getDrawingCache () Android 2.1 View всегда возвращает значение null Как отключить вертикальную прокрутку webview для загрузки всей страницы в виде другого столбца Я не вижу Java SDK javadoc в Eclipse Создайте андроид apk, используя сценарий оболочки из php? Исключение null point исключения Arrayadapter.getcount Android: java.lang.IllegalAccessException при попытке использовать пользовательский класс «Приложение» Ошибка Android Marketplace: «Сервер не смог обработать ваш apk. Попробуй еще раз."

Android: как мне форматировать номер как телефон с круглыми скобками

У меня есть номер, который мне нужно отформатировать как номер телефона. Если я сделаю

PhoneNumberUtils.formatNumber(numStr); 

Затем я получаю

 888-555-1234 

Но мне нужно получить

 (888) 555-1234 

Как мне получить второй? Есть ли стандартный способ андроида?

    Если вам известна страна, для которой вы хотите это сделать, вы можете использовать библиотеку libphonenumber библиотеки Open Source . Вот как вы можете отформатировать его:

     String numberStr = "8885551234" PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { PhoneNumber numberProto = phoneUtil.parse(numberStr, "US"); //Since you know the country you can format it as follows: System.out.println(phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL)); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } 

    Если вы не знаете страну, то для numberStr используйте телефонный номер формата E.164 и вместо кода страны используйте null.

    Не знаю, нашли ли вы то, что искали, но я закончил тем, что написал небольшой метод, который занимает длину строки (так как номера телефонов, которые я получаю из веб-сервиса, могут быть разными форматами). Я считаю, что он должен работать (пока все мои тестовые примеры были с первыми двумя вариантами – пока не тестировали другие два).

     public static String FormatStringAsPhoneNumber(String input) { String output; switch (input.length()) { case 7: output = String.format("%s-%s", input.substring(0,3), input.substring(3,7)); break; case 10: output = String.format("(%s) %s-%s", input.substring(0,3), input.substring(3,6), input.substring(6,10)); break; case 11: output = String.format("%s (%s) %s-%s", input.substring(0,1) ,input.substring(1,4), input.substring(4,7), input.substring(7,11)); break; case 12: output = String.format("+%s (%s) %s-%s", input.substring(0,2) ,input.substring(2,5), input.substring(5,8), input.substring(8,12)); break; default: return null; } return output; } 

    Вы просто используете это и хотите:

     new PhoneNumberFormattingTextWatcher() 

    Или Посмотрите на этот URL:

    http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html

    Если у вас есть строка "888-555-1234" – с помощью PhoneNumberUtils.formatNumber(numStr); Вы можете просто сделать это:

     String numStr = "888-555-1234"; numStr = "(" + numStr.substring(0,3) + ") " + numStr.substring(4); System.out.print(numStr); // (888) 555-1234 

    Однако это жестко закодировано. Вам нужно будет убедиться, что у String было всего 10 цифр, прежде чем делать это.