Как разобрать сложные логические операции в java? - PullRequest
3 голосов
/ 18 февраля 2020

Есть ли способ проанализировать строки, которые включают логические операторы and / or, и получить результат как true или false в java? Например,

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

Я не смог найти ни одной библиотеки. На самом деле у меня есть некоторые идеи, но они настолько сложны. Может быть, проще?

1 Ответ

4 голосов
/ 18 февраля 2020

Вы можете использовать уже упомянутый механизм сценариев:

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

или язык выражений пружины:

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);

Обратите внимание, что в обоих случаях необходимо было изменить исходное выражение путем замены более лофические операторы или логические константы.

...