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('/');
}

char caが上記の演算子のいずれかであるかどうかを確認するには、次を使用します。

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 に答える