【问题标题】: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);
请注意,在这两种情况下,都需要通过替换八个局部运算符或逻辑常量来修改原始表达式。