解析包含HashMap变量的公式

时间:2014-03-04 10:09:58

标签: java parsing hashmap

我创建了以下hashmap:

HashMap<String, String> toleranceValues = new HashMap<String, String>();

包含变量名称及其各自的值,例如:

 "ANGLE"="3.0"

鉴于这个hashmap,我需要使用它中的变量来解析常规String中包含的数学公式,例如:

 String formula = " ANGLE*PI/2";

问题不涉及数学解析,因为我已经使用JEval找到了解决方案。我只需要一种方法来获取存储在地图中的变量值,并显示在公式中。

2 个答案:

答案 0 :(得分:2)

查看unit tests for JEval您在公式中定义格式为#{[variable name]}的变量。此信息也位于Evaluator的JavaDocs中。

鉴于变量名称的这一要求,要使上述公式起作用,代码将如下所示:

  Map variables = new HashMap();
  variables.put("ANGLE", "3.0");
  variables.put("PI", "3.14");

  Evaluator evaluator = new Evaluator();
  evaluator.setVariables(variables);

  String result = evaluator.evaluate("#{ANGLE} * #{PI} / 2"));

答案 1 :(得分:0)

可以将公式视为FreeMarker模板,该模板将使用地图中的值进行填充。