我们目前使用 Jeks 解析器来评估表达式。我看不到用它评估字符串表达式的方法 - 例如:
如果(“测试 1”=“测试 2”)
有什么东西可以评估 Java 中的字符串和数学表达式吗?最好是免费或开源的。
谢谢你的帮助,
安德斯
我们目前使用 Jeks 解析器来评估表达式。我看不到用它评估字符串表达式的方法 - 例如:
如果(“测试 1”=“测试 2”)
有什么东西可以评估 Java 中的字符串和数学表达式吗?最好是免费或开源的。
谢谢你的帮助,
安德斯
有很多工具可以评估表达式;正确答案将取决于您的确切目标。
我要看的两件事:
答案是在 Jeks 论坛上发帖。我得到了Manu的答复。我认为它不活跃,特别是因为我无法在上面注册 - 但它得到了排序。
但是,如果有人遇到同样的问题,那么以下代码行将使其正常工作:
ExpressionParser parser; // we did have = new ExpressionParser(new JeksExpressionSyntax(), null);
JeksInterpreter interpreter; //
并创建解释器:
interpreter = new JeksInterpreter() {
@Override
public Object getBinaryOperatorValue (Object binaryOperatorKey, Object param1, Object param2)
{
// Only functions may take a cell set as parameter
if ( param1 instanceof JeksCellSet || param2 instanceof JeksCellSet)
throw new IllegalArgumentException ();
// Enabled comparison between any type supported by Jeks
else if (binaryOperatorKey.equals (JeksExpressionSyntax.OPERATOR_EQUAL))
return param1 != null && param1.equals (param2)
? Boolean.TRUE : Boolean.FALSE;
// Enabled comparison between any type supported by Jeks
else if (binaryOperatorKey.equals (JeksExpressionSyntax.OPERATOR_DIFFERENT))
return param1 != null && param1.equals (param2) ? Boolean.FALSE : Boolean.TRUE;
else
return super.getBinaryOperatorValue (binaryOperatorKey, param1, param2);
}
};
parser = new ExpressionParser(new JeksExpressionSyntax(), null);