#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
).