IKExpressionV2.1.2快速入门
2016-05-22 17:05
357 查看
1、前言
网上关于IKExpression的资料也有不少,不过基本都是V2.0的,内容基本一致,该文章不会写过多的理论性的东东,主要以示例来介绍IKExpression如何使用!也当时本人学习的笔记,方便今后翻阅。2、如何使用
2.1 语法
变量名遵循Java规范函数声明以$打头【$SYSDATE()】
日期常量以“[]”符号界定,不支持毫秒【[2016-05-22 16:40:00]】
2.2 基本应用
先看代码:String expression = "\"Hello \" + 用户名"; // 定义需要执行的表达式 List<Variable> varialbes = new LinkedList<Variable>(); varialbes.add(Variable.createVariable("用户名", "ikexpression")); // 定义表达式中的参数名及值 Object result = ExpressionEvaluator.evaluate(expression, varialbes); // 执行表达式并返回结果以上是IKExpression最基本的字符串表达式执行方式。表达式需要返回一个动态的字符串,“用户名”在这里是指变量名。IKExpression就是使用java实现的插件,所以java的语法也适用IKExpression,比如表达式中的符号“+”,就是将字符串拼接组合成新的字符串。IKExpression还支持【-、×、/、
%、!、&&、||、?:】等运算符,对于&&、||、?:也有短路优先处理,另外还特有集合运算符#,#相当于集合的add方法,看代码:
String expression = "区#市#省"; List<Variable> varialbes = new LinkedList<Variable>(); varialbes.add(Variable.createVariable("区", "XX区")); varialbes.add(Variable.createVariable("市", "XXX市")); varialbes.add(Variable.createVariable("省", "XXXX省")); Object result = ExpressionEvaluator.evaluate(expression, varialbes); // result=[XX区, XXX市, XXXX省]
2.3 高级应用
如何将字符串当成java的方法来执行?IKExpression只需要三步轻松搞定Step1:在工程classpath目录添加IKExpression.cfg.xml配置文件【注意:该文件名是V2.1.2版本的,网上资料大多说的是V2.0,文件名是functionConfig.xml(V2.0没有使用,故未测试配置文件名是否正确,但是配置内容一致)】
<?xml version="1.0" encoding="UTF-8"?> <function-configuration> <!-- 系统函数默认配置 --> <bean class="org.wltea.expression.function.SystemFunctions"> <function name="CONTAINS" method="contains"> <parameter-type>java.lang.String</parameter-type> <parameter-type>java.lang.String</parameter-type> </function> <function name="STARTSWITH" method="startsWith"> <parameter-type>java.lang.String</parameter-type> <parameter-type>java.lang.String</parameter-type> </function> <function name="ENDSWITH" method="endsWith"> <parameter-type>java.lang.String</parameter-type> <parameter-type>java.lang.String</parameter-type> </function> <function name="CALCDATE" method="calcDate"> <parameter-type>java.util.Date</parameter-type> <parameter-type>int</parameter-type> <parameter-type>int</parameter-type> <parameter-type>int</parameter-type> <parameter-type>int</parameter-type> <parameter-type>int</parameter-type> <parameter-type>int</parameter-type> </function> <function name="SYSDATE" method="sysDate" /> <function name="DAYEQUALS" method="dayEquals"> <parameter-type>java.util.Date</parameter-type> <parameter-type>java.util.Date</parameter-type> </function> </bean> <!-- 用户函数配置 ,请在这里定制您自己的函数,<span style="color:#ff0000;"><strong><em>*表示自定类的包名</em></strong></span> --> <bean class="****.Functions"> <function name="test" method="test"> <parameter-type>java.lang.String</parameter-type> </function> </bean> </function-configuration>
函数名 | 参数 | 返回值类型 | 说明 |
---|---|---|---|
CONTAINS | String, String | Boolean | 相当于java中的contains方法,判断字符串是否包含自字符串 |
STARTSWITH | String, String | Boolean | 相当于java中的startsWith,判断字符串前缀 |
ENDSWITH | String, String | Boolean | 同上,比较后缀 |
CALCDATE | Date, int, int, int, int, int, int | Date | 日期计算函数 参数说明:源日期,年,月,日,时,分,秒。正数表示向后计算,负数表示向前计算 如: $CALCDATE([2016-05-22], 2, 0, 0, 0, 0, 0)=[2018-05-22] $CALCDATE([2016-05-22 16:40:00], 0, 0, 0, -6, -10, 0)=[2018-05-22 10:30:00] |
SYSDATE | 无 | Date | 获取当前系统时间 |
DATEEQUALS | Date, Date | Boolean | 日期比较,忽略时分秒 [2016-05-22 16:40:00]与[2016-05-22 23:40:00]返回true |
public class Functions { public String test(String name) { return "hi, " + name; } }
Step3:编写main运行表达式
String expression = "$test(name)"; List<Variable> varialbes = new LinkedList<Variable>(); varialbes.add(Variable.createVariable("name", "IKExpression")); Object result = ExpressionEvaluator.evaluate(expression, varialbes); // result=hi, IKExpression
至此,IKExpression可以添加到项目中使用了。
jar包:IKExpression.2.1.2.jar
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树