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 是否有操作员之一?

你必须以某种方式对其进行编码。您正在搜索的字符串不是enum值的名称。它们存储在自定义属性中。因此,您必须手动提取字符串,然后在目标字符串中搜索每个字符串。

有多种方法可以做到这一点;例如

  • 您可以简单地遍历 OPERATOR 枚举值,提取每个操作符字符串并针对您的输入字符串进行测试;请参阅@pangea 的答案。

  • 您可以使用循环构建一个匹配任何运算符字符串的正则表达式,然后使用该正则表达式匹配该字符串。如果性能是一个真正的问题并且您可以分摊创建正则表达式的成本,这将是一个好方法;即只做一次,并多次重复使用正则表达式。(但如果性能不是问题,那么这种方法的额外复杂性是没有保证的。)

于 2013-01-25T00:33:09.270 回答