Это решение работает с телефонными номерами, разделенными с любой строкой, которая не содержит номера:
String orig = "0173556677 (Alice), 017545454 (Bob)";
String[] numbers = orig.split("\\D+"); //split at everything that is not a digit
StringBuilder sb = new StringBuilder();
if (numbers.length > 0) {
sb.append(numbers[0]);
for (int i = 1; i < numbers.length; i++) { //concatenate all that is left
sb.append(";");
sb.append(numbers[i]);
}
}
String res = sb.toString();
или с com.google.common .base.Joiner:
String[] numbers = orig.split("\\D+"); //split at everything that is not a digit
String res = Joiner.on(";").join(numbers);
PS. Существует незначительное отклонение от требований в лучшем проголосовавшем примере, но, похоже, я не могу просто добавить один символ (должен быть replaceAll(", ", ";")
, с пробелом после комы или \\s
), и я не хочу испортить чей-то код.
Посмотрите на libphonenumber Google – fge