3

Is there any way to parse strings which include logical and/or operators and get result as true or false in java? For example

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

I couldn't find any library. Actually I have some ideas but they are so complex. Maybe some easier way?

HoRn
  • 1,458
  • 5
  • 20
  • 25
Mrkrky
  • 73
  • 5

1 Answers1

4

You could use already mentioned script engine:

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

or spring expression language:

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

Please note, that in both cases there was needed to modify original expression by replacing eighter lofical operators or logical constants.

Daniil
  • 913
  • 8
  • 19