Как отформатировать номер телефона в виде строки в Java? - PullRequest
26 голосов
/ 25 февраля 2011

Я храню телефонные номера как длинные, и я хотел бы просто добавить дефисы при печати телефонного номера в виде строки.

Я пытался использовать DecimalFormat, но дефис не понравился.Вероятно, потому что он предназначен для форматирования десятичных чисел, а не длинных.

long phoneFmt = 123456789L;
DecimalFormat phoneFmt = new DecimalFormat("###-###-####");
System.out.println(phoneFmt.format(phoneNum)); //doesn't work as I had hoped

В идеале, я бы тоже хотел иметь круглые скобки для кода города.

new DecimalFormat("(###)-###-####");

Какой правильный путьсделать это?

Ответы [ 15 ]

1 голос
/ 13 июля 2017
Pattern phoneNumber = Pattern.compile("(\\d{3})(\\d{3})(\\d{4})");
// ...
Matcher matcher = phoneNumber(numberAsLineOf10Symbols);
if (matcher.matches) {
    return "(" + matcher.group(1) + ")-" +matcher.group(2) + "-" + matcher.group(3);
}
1 голос
/ 18 июня 2014

String formatterPhone = String.format ("% s-% s-% s", phoneNumber.substring (0, 3), phoneNumber.substring (3, 6), phoneNumber.substring (6, 10));

1 голос
/ 08 февраля 2014

Вы также можете использовать подстроку и конкатенацию для простого форматирования.

telephoneNumber = "("+telephoneNumber.substring(0, 3)+")-"+telephoneNumber.substring(3, 6)+"-"+telephoneNumber.substring(6, 10);

Но следует отметить, что вы должны проверить длину поля номера телефона, чтобы убедиться, что ваше форматирование безопасно.

1 голос
/ 25 февраля 2011

Я бы подумал, что вам нужно использовать MessageFormat, а не DecimalFormat.Это должно быть более гибким.

0 голосов
/ 29 октября 2018

Использование StringBuilder для исполнения.

long number = 12345678L;

System.out.println(getPhoneFormat(String.valueOf(number)));

public static String getPhoneFormat(String number)
{
    if (number == null || number.isEmpty() || number.length() < 6 || number.length() > 15)
    {
        return number;
    }

    return new StringBuilder(25).append("(").append(number.substring(0, 3))
            .append(") ").append(number.substring(3, 6))
            .append("-").append(number.substring(6))
            .toString();

}
...