Java 字符串和数学表达式求值器

问题描述 投票:0回答:2

我们目前使用 Jeks 解析器来计算表达式。我看不到用它来计算字符串表达式的方法 - 例如:

IF(“测试 1”=“测试 2”)

有什么可以在 Java 中计算字符串和数学表达式吗?最好是免费或开源的。

java string expression evaluator
2个回答
1
投票

有很多工具可以评估表达式;正确的答案将取决于您的具体目标。

我会看两件事:


0
投票

答案是 Jeks 论坛上的一个帖子。我得到了马努的答复。我认为它不活跃,特别是因为我无法注册 - 但这已经解决了。

但是,如果有人遇到同样的问题,那么以下代码行将使其正常工作:

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);
© www.soinside.com 2019 - 2024. All rights reserved.