Не знаю, нашли ли вы то, что искали, но я закончил тем, что написал небольшой метод, который занимает длину строки (так как номера телефонов, которые я получаю от веб-службы, могут быть различными форматы). Я считаю, что он должен работать (до сих пор все мои тестовые примеры были с двумя первыми вариантами - еще не тестировали два других).
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;
}
Вы только ориентируетесь в Северной Америке число? –