Java 8 使用nashorn比较java中的字符串查询
我有以下代码:Java 8 使用nashorn比较java中的字符串查询,java-8,nashorn,Java 8,Nashorn,我有以下代码: String query = "a == someRandomWord && b != 2"; ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); SimpleBindings variables = new SimpleBindings(); variables.put("a", "someRan
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));
它给了我一个错误,因为我不允许将字符串作为参数传递
如何将字符串对象与.eval()
函数进行比较
String query = "a == p && a != 2";
^^^
this is not a string but a variable
使用'yourString'
或\'yourString\'
(因为您需要在Java中转义它),例如
或者:按照注释中的建议,为p
提供绑定
使用'yourString'
或\'yourString\'
(因为您需要在Java中转义它),例如
或者:按照注释中的建议为
p
提供绑定。这不是一个错误,因为p
未绑定?未绑定?我不知道什么是未绑定的。如何解决这个问题?相比之下,您有两个变量:a
和p
——但是您在简单绑定中声明了变量a
和b
。变量p
没有绑定到任何地方,如果这样做的话,javascript的严格版本会产生运行时错误,我很确定。问题是我想比较a
是否是字符串。一些随机词。例如,isa.equal(p)
。糟糕,我会把它改得更清楚这不是一个错误吗,因为p
未绑定?未绑定?我不知道什么是未绑定的。如何解决这个问题?相比之下,您有两个变量:a
和p
——但是您在简单绑定中声明了变量a
和b
。变量p
没有绑定到任何地方,如果这样做的话,javascript的严格版本会产生运行时错误,我很确定。问题是我想比较a
是否是字符串。一些随机词。例如,isa.equal(p)
。我的错,我会把它改得更清楚哦,问题是字符串查询
,而不是简单索引
。谢谢哦,问题在于字符串查询
,而不是简单索引
。谢谢
String query = "a == 'someRandomWord' && b != 2";