我需要使用JEP库来解析java中的一些表达式。我遇到了占位符的问题。
调用数据库后,返回一个需要转换的值,例如:如果返回值= 50,则需要转换为新的值={{/10}}值(格式与数据库中的格式一致)
为此,我尝试了复制一些场景:
public static void main(String[] args) {
JEP j = new JEP();
try {
j.addVariable("x", 9);
j.parseExpression("x/5");
Object a=j.getValueAsObject();
System.out.println(a);
}catch (Exception e) {
e.printStackTrace();
}The answer is 1.8 (Expected)现在,为了复制真实场景,如果我执行以下操作,代码将失败
public static void main(String[] args) {
try {
JEP j = new JEP();
j.addVariable("{x}", 9);
j.parseExpression("{x}/5");
Object a=j.getValueAsObject();
System.out.println(a);
}catch (Exception e) {
e.printStackTrace();
}
}我希望这里是1.8,但它返回的是null。有没有人能在这里提供一些建议或建议?
发布于 2021-11-11 09:14:15
似乎不支持{},但是支持()。因此,我建议您对{}进行字符串操作,并在可能的情况下替换为()。
下面是一个示例:
JEP jepExpression = new JEP();
jepExpression.setAllowUndeclared(true);
jepExpression.addStandardConstants();
jepExpression.addStandardFunctions();
jepExpression.parseExpression("(a + 1) * (b - 3)");
jepExpression.addVariable("a", 1);
jepExpression.addVariable("b", 2);
System.out.println("Value: " + jepExpression.getValueAsObject());
Value: -2.0https://stackoverflow.com/questions/69925399
复制相似问题