Android: замена символов в строке

В моей телефонной книге на моем мобильном телефоне есть все виды контактов, таких как:

+(353) 085 123 45 67
00661234567
0871234567
(045)123456

Я помещаю их все в формат E.164, который я в основном завершил, но вопрос, который мне нужно решить, заключается в следующем:

Как я могу удалить все символы (включая пробелы), кроме цифр в моей строке, кроме первого символа, если это "+" или число?

string phoneNumberofContact;

Так, например, приведенные выше случаи будут выглядеть так:

+3530851234567
00661234567
0871234567
045123456

2 ответа

Решение

Обновить

Обрабатывать + только на первой позиции вы можете сделать:

boolean starsWithPlus = input.charAt(0) == '+';
String sanitized = input.replaceAll("[^0-9]", "");

if (startsWithPlus) {
    sanitized = "+" + sanitized;
}

В общем, я проверяю, начинается ли оно с плюса, затем удаляет все, кроме цифр, и затем снова добавляет плюс, если он там был.

оригинал

Предполагая, что вы хотите только сохранить + или цифры, простое регулярное выражение будет работать, и String обеспечивает replaceAll() способ сделать это еще проще.

String sanitized = input.replaceAll("[^+0-9]", "");

Этот метод поможет

public String cleanPhoneDigits(String phonenum) {
StringBuilder builder = new StringBuilder();
if (phonenum.charAt(0).equals('+') {
     builder.append('+');
}
for (int i = 1; i < phonenum.length(); i++) {
    char c = phonenum.charAt(i);
    if (Character.isDigit(c)) {
        builder.append(c);
    }
}
return builder.toString();
}
Другие вопросы по тегам