Подтвердить что ты не робот

Java Regular Expression удаляет все, кроме чисел из String

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

Как я могу это сделать?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

String clean1 = string1.replaceAll("[^0-9]", "");

или

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

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

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

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

Ответ 3

string1 = string1.replaceAll("[^0-9]", "");
string2 = string2.replaceAll("[^0-9]", "");

Ответ 4

Это Google Guava #CharMatcher.

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