使用 nashorn 比较 java 中的字符串查询

Compare string query in java using nashorn

我有这个代码:

        String query = "a == someRandomWord && b != 2";

        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

        SimpleBindings variables = new SimpleBindings();
        variables.put("a", "someRandomWord");
        variables.put("b", 1);
        System.out.println(engine.eval(query, variables));

它给我一个错误,因为我不允许将字符串作为参数传递。

如何比较 String 对象与 .eval() 函数?

String query = "a == p && a != 2";
                    ^^^
                    this is not a string but a variable

使用 'yourString'\"yourString\"(因为您需要在 Java 中转义它),例如

String query = "a == 'someRandomWord' && b != 2";

或者:还按照评论中的建议为 p 提供绑定。