如何在Java中只将[0-9]和[+-*/]的字符保存在字符串中?我的方法是使用一个联合来创建一个由[0-9]和[+-*/]字符类组成的字符类,但是我得到了一个空字符串。
下面是我使用的一个示例字符串: 10+2*2-5
public void cleanup(String s){
String regex = "[^0-9[^+-*//]]";
String tmp = s.replaceAll(regex, "");
System.out.println(tmp);
}发布于 2015-05-06 01:39:54
您希望您的字符类([...])包括范围0-9以及其他字符*、/、-和+。你只需要把它们一个接一个地放进去,然后转义- (\\-),除非它是最后一个字符。然后,在开头使用一个否定结构(^):
public class Example {
public static void main(String[] args) {
String test = "a3f6+[,b7*\"d/-8u";
System.out.println(test.replaceAll("[^0-9/*+-]", ""));
}
}输出
36+7*/-8发布于 2015-05-06 01:39:41
在第二部分中,使用-的方式有一个问题,如果在表达式的中间使用-,就像在[^+-*/]中一样,它认为它是一个范围表达式的一部分,就像您在0-9中所做的那样,所以需要将-放在表达式的末尾,这样它就不会被视为一个范围。
下面的表达式应该做您想要做的事情:
[^0-9*/+-]发布于 2015-05-06 01:40:41
那么用于正则表达式的s/[^0-9]|[^+-*//]//g呢?
https://stackoverflow.com/questions/30065576
复制相似问题