【问题标题】:How to parse complex logical operations in java?如何解析java中复杂的逻辑操作?
【发布时间】:2020-02-18 07:45:06
【问题描述】:

有什么方法可以解析包含逻辑and/or 运算符的字符串,并在java 中将结果设为真或假?例如

    (1 OR 0 AND 1 AND 0 OR(0 AND 0))

我找不到任何图书馆。其实我有一些想法,但它们太复杂了。也许有更简单的方法?

【问题讨论】:

标签: java parsing logical-operators


【解决方案1】:

您可以使用已经提到的脚本引擎:

String expression = "(1 || 0 && 1 && 0 ||(0 && 0))";
Object result = new ScriptEngineManager().getEngineByName("JavaScript").eval(expression);
System.out.println(result);

或spring表达式语言:

String data = "(true OR false AND true AND false OR(false AND false))";
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression(data);
result = exp.getValue();
System.out.println(result);

请注意,在这两种情况下,都需要通过替换八个局部运算符或逻辑常量来修改原始表达式。

【讨论】:

  • 这正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多