假设我有
字符串String foo = "a+b"
变量a
和b
,Integer a = 2
Integer b = 3
我想以某种方式分配新的整数c
,应使用字符串a
从b
和foo
计算得出。
评估无效,因为它只能计算具有绝对值而不是变量值的东西。
最佳答案
您可以使用JEP Java表达式解析器库(或其他表达式解析器)。
例如:
String foo = "a+b";
Jep jep = new Jep();
try {
jep.addVariable("a", a);
jep.addVariable("b", b);
jep.parse(foo);
Object result = jep.evaluate();
System.out.println("foo = " + result);
} catch (JepException e) {
System.out.println("An error occurred: " + e.getMessage());
}
编辑:
事实证明,JEP(这里为http://www.singularsys.com/jep/)是许可软件,因此您必须付费,但是还有另一种选择。
还有许多其他类似的库,包括JEPLite(http://jeplite.sourceforge.net/index.html),据我所知,JEPLite()似乎是免费版本,应该兼容。