Как удалить все символы, кроме цифр с помощью метода replaceAll()?
Как удалить все символы, кроме цифр с помощью метода replaceAll()?
Ответы (2 шт):
Автор решения: Ivan Shatsky
→ Ссылка
Используя регулярное выражение [^\d]+ (в квадратных скобках мы указываем набор символов, которые нас интересуют, \d обозначает любую цифру, специальный символ ^ внутри квадратных скобок, будучи первым, имеет значение "всё, кроме далее перечисленного", + - "жадный" квантификатор "один или больше").
Пример:
import java.util.Date;
import java.util.Formatter;
public class Main
{
public static void main(String[] args) {
String formattedDate = String.format("%1$tb %1$te, %1$tY, %1$tH:%1$tM", new Date());
String onlyDigits = formattedDate.replaceAll("[^\\d]+", "");
System.out.println(formattedDate);
System.out.println(onlyDigits);
}
}
Apr 28, 2025, 07:22
2820250722
Дополнение
В комментариях напомнили про мета-символ \D, который соответствует любому символу кроме цифры. Действительно в данном случае лучше использовать именно его:
...
String onlyDigits = formattedDate.replaceAll("\\D+", "");
...
Автор решения: Stanislav Volodarskiy
→ Ссылка
Отыскать все не-цифры и заменить их на пустые строки:
String text = ...;
// \D совпадает с не-цифрами
// (\\ - из-за оформления строк в Java)
// |
// v
// -----
String digits = text.replaceAll("\\D", "");
// --
// ^
// |
// удаляем (заменяем на пустоту)