3

我正在尝试编写一个正则表达式来匹配数学运算符到一个字符。我尝试了很多不同的东西,但我不断得到:

标记上的语法错误,应改为表达式

我的代码如下所示:

public static void readMath(char c) {
        if(c == [+\-*/]) {
            // do some stuff
        }
    }

我试过逃避不同的事情等等。我似乎无法让它工作。

4

4 回答 4

5
public static void readMath( char c ) {
    if ( String.valueOf( c ).matches( "[-+*/]" ) ) {
        // do stuff
    }
}
于 2013-02-22T23:39:55.757 回答
3

您可以执行以下操作。

像这样初始化类中允许的运算符列表:

private static List<Character> ops = new ArrayList<Character>();

static {
    ops.add('+');
    ops.add('-');
    ops.add('*');
    ops.add('/');
}

要检查 achar c是否是上述运算符之一,请使用:

if(ops.contains(c)) {

}
于 2013-02-22T23:18:46.400 回答
2

您不需要正则表达式来匹配单个char. 无论如何,这不是您在 Java 中使用正则表达式的方式。

if(c == '+' || c == '-' || c == '/' || c == '*') {
      // do some stuff
}

或者您可以尝试使用 switch 语句。

switch (c)
{
case '+':
case '-':
case '*':
case '/':
     // do some stuff
     break;
}
于 2013-02-22T23:08:00.387 回答
0

你真的不需要正则表达式,使用枚举或开关。这是一个枚举示例:

public enum Operation {
PLUS('+'),
MINUS('-'),
TIMES('*'),
DIVIDE('/')
private final char symbol;
Operation(char symbol) { this.symbol = symbol; }
public char toChar() { return symbol; }
}
public void checkOp(){
    if(Operation.PLUS.toChar()=='+') {

}
}
于 2013-02-22T23:12:26.027 回答