java 数学表达式解析插件_数学表达式解析-JAVA版
1 、工具介紹
String exp = “v>=10&&v<=2000&&v%10==0”;
在 js 中,能夠直接運行 eval 得到結果, java 中也可以!
在 java 中運行執行這種字符串格式數學表達式的方法:
1、
自己寫按照算法(逆波蘭)一個解析程序。
2、
使用第三方的工具。
1.jakarta commons JEXL. : Apache 出品,必屬精品。
2.Beanshell :動態語言,能夠很好與 spring 集成。
3.Java Math Expression Parser jep
4.parse combinator jparsec
5.JFormula:http://www.japisoft.com/formula/
6.jeval:http://www.javagg.com/diary/67916522
7.jdk 6.0 的 script : java 中比較著名的 js 引擎 -mozilla 開源的 rhino ,通過動態語言的 eval 實現。
8.IK Expression :官方介紹: IK Expression 是一個開源的( OpenSource) ,可擴展的( Extensible ),基于 java 語言開發的一個超輕量級( Super lightweight )的公式化語言解析執行工具包。嚴重推薦 :文檔很全,易用,如果有不懂的地方,可以直接去作者的 blog 用中文交流。
協議: GNU
8.MVEL : 很好用,極為簡單 ,和 BeanShell 一樣有自己的交互式環境: 。
使用教程:
語法環境:
模板:
能夠像 freemarker 、 velocity 一樣工作,雖然不專業功能也夠用了。
更新:
現在MVEL已經用到了google的MVC框架sitebricks中了,其中MVEL在sitebricks中地位類似ognl之于webwork。
協議: Apache 2.0 License
DEMO: ( IK Expression vs MVEL ):
IK Expression:
// 定義表達式
String expression = "v>=10&&v<=2000&&v%10==0" ;
// 給表達式中的變量 [ v ] 付上下文的值
List variables = new ArrayList();
variables.add(Variable. createVariable ( "v" , new Integer(10));
// 預編譯表達式
PreparedExpression pe = ExpressionEvaluator. preparedCompile (expression, variables)
// 執行表達式
Boolean result = (Boolean) pe.execute();
System. out .println( "Result = " + result.booleanValue()); // Result = true
// 更改參數,再次執行預編譯式
pe.setArgument( "v" , new Integer(11));
result = (Boolean) pe.execute();
System. out .println( "Result = " + result.booleanValue());// Result = false
MVEL :
//定義表達式
String expression = "v>=10&&v<=2000&&v%10==0";
Map vars = new HashMap();//參數環境表
// 給表達式中的變量 [ v ]賦值
vars.put("v", new Integer(10));
// 執行表達式,返回結果
Boolean result = (Boolean) MVEL.eval(expression, vars);
System. out .println( "Result = " + result.booleanValue());// Result = true
// 更改參數,再次執行預編譯式
vars.put("v", new Integer(10));
result = (Boolean) MVEL.eval(expression, vars);
System. out .println( "Result = " + result.booleanValue());// Result = false
2、
應用場景
通過數學公式的形式,
1、
適用于常規業務系統條件的動態配置。
2、
工作流的流程配置
總結
以上是生活随笔為你收集整理的java 数学表达式解析插件_数学表达式解析-JAVA版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java空格 逗号_Java将字符串中的
- 下一篇: java dto entity,enti