Регулярное выражение Java, удаляющее из строки все, кроме чисел - PullRequest
27 голосов
/ 30 июля 2011

У меня есть две строки string1 = 44.365 Online order и string2 = 0 Request Delivery. Теперь я хотел бы применить к этим строкам регулярное выражение, которое отфильтровывает все, кроме чисел, поэтому я получаю целые числа, такие как string1 = 44365 и string2 = 0.

Как мне это сделать?

Ответы [ 4 ]

59 голосов
/ 30 июля 2011

Вы можете использовать ^. Он рассматривает все, кроме того, что у вас есть.

Так что, если у вас есть [^y], он отфильтрует все, кроме y. В вашем случае вы бы сделали что-то вроде

String value = string.replaceAll("[^0-9]","");

где строка является переменной, содержащей фактический текст!

23 голосов
/ 30 июля 2011
String clean1 = string1.replaceAll("[^0-9]", "");

или

String clean2 = string2.replaceAll("[^\\d]", "");

Где \d является ярлыком для [0-9] класса символов, или

String clean3 = string1.replaceAll("\\D", "");

Где \D - отрицание класса \d (что означает [^0-9])

10 голосов
/ 30 июля 2011
string1 = string1.replaceAll("[^0-9]", "");
string2 = string2.replaceAll("[^0-9]", "");
3 голосов
/ 01 октября 2015

Это Google Guava # CharMatcher Way.

String alphanumeric = "12ABC34def";

String digits = CharMatcher.JAVA_DIGIT.retainFrom(alphanumeric); // 1234

String letters = CharMatcher.JAVA_LETTER.retainFrom(alphanumeric); // ABCdef

Если вы хотите совпадать только с цифрами ASCII, используйте

String digits = CharMatcher.inRange('0', '9').retainFrom(alphanumeric); // 1234

Если вы хотите совпадать только с буквами латинского алфавита, используйте

String letters = CharMatcher.inRange('a', 'z')
                         .or(inRange('A', 'Z')).retainFrom(alphanumeric); // ABCdef
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...