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

时间:2011-07-30 13:58:15

标签: java regex

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

我该如何做到这一点?

4 个答案:

答案 0 :(得分:59)

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

所以,如果你有[^y]它将过滤y之外的所有内容。在你的情况下,你会做类似

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

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

答案 1 :(得分:23)

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

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

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

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

\D取决于\d类(表示[^0-9]

答案 2 :(得分:10)

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

答案 3 :(得分:3)

  

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