Удалить все символы, которые не являются числом, включая точку

#java #string #parsing

#java #строка #синтаксический анализ

Вопрос:

Я не понимаю, как работает метод replaceAll. Более конкретно, первый аргумент принимает регулярное выражение string. Я хотел бы удалить все символы, которые не являются числом, включая точки.

моя реализация.

     userId = inputRow.next().replaceAll("[\.^\d.]", "");
  

Пример вывода:

 "","",""
"","",""
"","",""
"","BBLDX",""
"","N",""
"","",""
"","",""
"","",""
"","",""
"","",""
"","",""
"","",""
"","",""
"","",""
  

Это удаление всего, кроме алфавитов

Комментарии:

1. Это оставляет только алфавитные символы. Я просто хотел цифры. @Alex

Ответ №1:

Вы можете сделать это таким образом:

 userId = inputRow.next().replaceAll("[^\d]", "");
  

[^\d] сопоставит всю последовательность символов, которая не является числом, и заменит ее пустой строкой.

Ответ №2:

У вас ошибка в регулярном выражении.
Это должно быть «[^\d]».
Это заменит все символы, которые не являются цифрами.

Ответ №3:

 String text = "afadsfas1234fasdfadsf.fasdf.sadfadsf.afadsf.5678";
System.out.println(text);
//  /D is equal to a non digit. [^0-9]
String result = text.replaceAll("[\.\D]", "");
System.out.println(result);
//Result will be 12345678
  

Приведенный выше код поможет вам удалить все символы, которые не являются числом, включая точки.
d для чисел 0-9 и D для неразрядных чисел.