Java Regular Expression удаляет все, кроме чисел из String
У меня две строки
string1 = 44.365 Online order
и string2 = 0 Request Delivery
. Теперь я хотел бы применить регулярное выражение к этим строкам, которое отфильтровывает все, кроме чисел, поэтому я получаю целые числа, такие как string1 = 44365
и string2 = 0
.
Как я могу это сделать?
Ответы
Ответ 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