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();
}