我有两个字符串
string1 = 44.365 Online order
和string2 = 0 Request Delivery
。现在我想对这些字符串应用正则表达式,过滤掉除数字之外的所有字符串,以便得到string1 = 44365
和string2 = 0
之类的整数。
我该如何做到这一点?
答案 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)
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