2013-01-25 61 views
0
public enum OPERATORS { 
    MUL("*"), ADD("+"), SUB("-"), DIV("/") 
} 

和String作为Java:如何知道一个字符串是否有一个ENUM存在?

s = A2 B4 * C5/

我如何检查是否sOPERATORS之一吗?

+1

向我们展示'enum'声明的其余部分。特别是,保存枚举的字符串值的属性的getter。 –

+1

你只想检查's' *是否包含* OPERATORS之一?或者你是否想将字符串解析为后缀数学表达式? –

回答

2

假设getOperatorSymbol()在你的枚举实施

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

} 
1

我如何检查是否S有运营商之一?

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

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

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

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

相关问题