0
public enum OPERATORS {
  MUL("*"), ADD("+"), SUB("-"), DIV("/")
}

および文字列として

s = A2 B4 * C5 /

のいずれかがあるかどうかを確認するにsはどうすればよいOPERATORSですか?

4

2 に答える 2

2

getOperatorSymbol()が列挙型に実装されていると仮定します

for (OPERATORS op: OPERATORS.values()) {
  if(s.contains(op.getOperatorSymbol())
  {
      //your code
  }

}
于 2013-01-25T00:29:37.370 に答える
1

sに演算子の1つがあるかどうかを確認するにはどうすればよいですか?

なんとかしてコーディングする必要があります。検索している文字列は、enum値の名前ではありません。それらはカスタム属性に格納されます。したがって、文字列を手動で抽出してから、それぞれのターゲット文字列を検索する必要があります。

これを行うには複数の方法があります。例えば

  • OPERATOR列挙値をループし、それぞれの演算子文字列を抽出して、入力文字列に対してテストするだけです。@pangeaの回答を参照してください。

  • ループを使用して、任意の演算子文字列に一致する正規表現を作成し、その正規表現を使用して文字列に一致させることができます。これは、パフォーマンスが真の懸念事項であり、正規表現の作成コストを償却できる場合に適したアプローチです。つまり、1回だけ実行し、正規表現を複数回再利用します。(ただし、パフォーマンスが問題にならない場合は、このアプローチの複雑さは保証されません。)

于 2013-01-25T00:33:09.270 に答える