формат строки java

#java #string #format #string-formatting

#java #строка #форматирование #форматирование строки

Вопрос:

Мне нужно изменить строку из следующего формата «6254897283» в следующий формат «(625) 555-1212». Есть идеи, как лучше это сделать? Я сделаю это методом, который я хотел бы использовать повторно.

Ответ №1:

 String phone = "6254897283";

MessageFormat phoneFmt = new MessageFormat("({0}) {1}-{2}");
String[] phoneArr = { phone.substring(0, 3), phone.substring(3, 6),
        phone.substring(6) };

System.out.println(phoneFmt.format(phoneArr));
  

Или

Существует такая библиотека с открытым исходным кодом http://code.google.com/p/libphonenumber /

Ответ №2:

Вы могли бы просто использовать replaceAll и регулярные выражения для достижения этой цели:

 String s = "6254897283";
System.out.println(s.replaceAll("(\d{3})(\d{3})(\d{4})", "($1) $2-$3"));
// (625) 489-7283
  

Идея состоит в том, чтобы разделить и захватить три группы из 3 ( $1 ), 3 ( $2 ) и 4 ( $3 ) цифр из исходного 10-значного числа, а затем соответствующим образом переформатировать эти группы ( ($1) $2-$3 ).