Java Regular Expression从String中删除除数字之外的所有内容

我有两个字符串string1 = 44.365 Online orderstring2 = 0 Request Delivery 。 现在我想对这些字符串应用一个正则表达式来过滤掉除数字之外的所有字符串,这样我就得到像string1 = 44365string2 = 0这样的整数。

我怎么能做到这一点?

你可以利用^ 。 它会考虑到你所面临的一切。

所以,如果你有[^y]它会过滤除y之外的所有东西。 在你的情况下,你会做类似的事情

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

其中string是一个包含实际文本的变量!

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

要么

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

其中\d[0-9]字符类的快捷方式,或

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

其中\D是对\d类的否定(表示[^0-9]

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

这是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