1 expr4j 简介
Expression Calculation Engine for Java :java表达式计算引擎
2 expr4j 下载地址
https://www.objecthunter.net/exp4j/
http://expr4j.sourceforge.net/
3 expr4j api
https://www.objecthunter.net/exp4j/apidocs/index.html
4 expr4j 例子
(1)将jar包放入webapp ->WEB-INF->lib 下
(2)在pom.xml下加依赖:
<!--计算公式--> <dependency> <groupId>com.expr4j</groupId> <artifactId>expr4j</artifactId> <version>0.0.1</version> <type>jar</type> <scope>system</scope> <systemPath>/lib/expr4j-0.0.1.jar</systemPath> </dependency>
(3)建立一个demo类测试代码
依赖引擎例子(例子为官方文档例子)
DependencyEngine e = new DependencyEngine(new BasicEngineProvider()); e.set("B1", "=A1*2"); e.set("A1", "=12*2"); e.set("C1", "=B1*A1"); System.out.println(e.getValue(Range.valueOf("B1"))); System.out.println(e.getValue(Range.valueOf("C1"))); e.set("A1", "2"); System.out.println(e.getValue(Range.valueOf("B1"))); System.out.println(e.getValue(Range.valueOf("C1")));
计算表达式例子(例子是在官方文档例子基础上进行了简单的改动)
SimpleEvaluationContext context = new SimpleEvaluationContext(); try { String line = inputParamString;//函数调用输入参数 if (line == null) return null; Expr e = ExprParser.parse(line); Exprs.toUpperCase(e); if (e instanceof ExprEvaluatable) { e = ((ExprEvaluatable) e).evaluate(context); } System.out.println(e); return e; } catch (Exception e) { e.printStackTrace(); }
一些表达式的调用(该例子均是调用expr4j提供的一些类,函数)
SimpleEvaluationContext context = new SimpleEvaluationContext(); Expr e = ExprParser.parse("11.8"); Expr e1 = ExprParser.parse("4.7");
Expr[] exprs = {e,e1};
//ExprDouble ExprDouble exprDouble = new ExprDouble(1.9); System.out.println("ExprDouble "+ exprDouble.value +ExprDouble.PI); //ExprGreaterThan TRUE 比较大小 ExprGreaterThan exprGreaterThan = new ExprGreaterThan(e,e1); System.out.println("ExprGreaterThan "+ exprGreaterThan.evaluate(context)); //AVERAGE 平均数 AVERAGE average = new AVERAGE(); System.out.println("AVERAGE "+ average.evaluate(context,exprs)); //ExcelDate toExcelDate System.out.println("ExcelDate "+ ExcelDate.toExcelDate((new Date()).getTime())); //ExprFunction 函数 ExprFunction exprFunction = new ExprFunction("AVERAGE", exprs); exprFunction.setImplementation(new AVERAGE()); System.out.println("ExprFunction " + exprFunction.evaluate(context));
【版权声明:本文为博主原创文章,博客地址:https://blog.youkuaiyun.com/shihua345,未经博主允许不得转载。】