IKExpressionV2.1.2快速入门

来源:互联网 发布:开个淘宝店要多少钱 编辑:程序博客网 时间:2024/05/29 04:46

1、前言

网上关于IKExpression的资料也有不少,不过基本都是V2.0的,内容基本一致,该文章不会写过多的理论性的东东,主要以示例来介绍IKExpression如何使用!也当时本人学习的笔记,方便今后翻阅。

2、如何使用

2.1  语法

  • 变量名遵循Java规范
  • 函数声明以$打头【$SYSDATE()】
  • 日期常量以“[]”符号界定,不支持毫秒【[2016-05-22 16:40:00]】

2.2 基本应用

先看代码:

[java] view plain copy
  1. String expression = "\"Hello \" + 用户名"// 定义需要执行的表达式  
  2. List<Variable> varialbes = new LinkedList<Variable>();  
  3. varialbes.add(Variable.createVariable("用户名""ikexpression")); // 定义表达式中的参数名及值  
  4. Object result = ExpressionEvaluator.evaluate(expression, varialbes); // 执行表达式并返回结果  
    以上是IKExpression最基本的字符串表达式执行方式。表达式需要返回一个动态的字符串,“用户名”在这里是指变量名。IKExpression就是使用java实现的插件,所以java的语法也适用IKExpression,比如表达式中的符号“+”,就是将字符串拼接组合成新的字符串。IKExpression还支持【-、×、/、 %、!、&&、||、?:】等运算符,对于&&、||、?:也有短路优先处理,另外还特有集合运算符#,#相当于集合的add方法,看代码:

[java] view plain copy
  1. String expression = "区#市#省";  
  2. List<Variable> varialbes = new LinkedList<Variable>();  
  3. varialbes.add(Variable.createVariable("区""XX区"));  
  4. varialbes.add(Variable.createVariable("市""XXX市"));  
  5. varialbes.add(Variable.createVariable("省""XXXX省"));  
  6. 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没有使用,故未测试配置文件名是否正确,但是配置内容一致)】

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <function-configuration>  
  3.     <!-- 系统函数默认配置 -->  
  4.     <bean class="org.wltea.expression.function.SystemFunctions">  
  5.         <function name="CONTAINS" method="contains">  
  6.             <parameter-type>java.lang.String</parameter-type>  
  7.             <parameter-type>java.lang.String</parameter-type>  
  8.         </function>  
  9.         <function name="STARTSWITH" method="startsWith">  
  10.             <parameter-type>java.lang.String</parameter-type>  
  11.             <parameter-type>java.lang.String</parameter-type>  
  12.         </function>  
  13.         <function name="ENDSWITH" method="endsWith">  
  14.             <parameter-type>java.lang.String</parameter-type>  
  15.             <parameter-type>java.lang.String</parameter-type>  
  16.         </function>  
  17.         <function name="CALCDATE" method="calcDate">  
  18.             <parameter-type>java.util.Date</parameter-type>  
  19.             <parameter-type>int</parameter-type>  
  20.             <parameter-type>int</parameter-type>  
  21.             <parameter-type>int</parameter-type>  
  22.             <parameter-type>int</parameter-type>  
  23.             <parameter-type>int</parameter-type>  
  24.             <parameter-type>int</parameter-type>  
  25.         </function>  
  26.         <function name="SYSDATE" method="sysDate" />  
  27.         <function name="DAYEQUALS" method="dayEquals">  
  28.             <parameter-type>java.util.Date</parameter-type>  
  29.             <parameter-type>java.util.Date</parameter-type>  
  30.         </function>  
  31.     </bean>  
  32.     <!-- 用户函数配置 ,请在这里定制您自己的函数,<span style="color:#ff0000;"><strong><em>*表示自定类的包名</em></strong></span> -->  
  33.     <bean class="****.Functions">  
  34.         <function name="test" method="test">  
  35.             <parameter-type>java.lang.String</parameter-type>  
  36.         </function>  
  37.     </bean>  
  38. </function-configuration>  
IKExpression自带函数函数名参数返回值类型说明CONTAINSString, StringBoolean相当于java中的contains方法,判断字符串是否包含自字符串STARTSWITHString, StringBoolean相当于java中的startsWith,判断字符串前缀ENDSWITHString, StringBoolean同上,比较后缀CALCDATEDate, int, int, int, int, int, intDate日期计算函数
参数说明:源日期,年,月,日,时,分,秒。正数表示向后计算,负数表示向前计算
如:
$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获取当前系统时间DATEEQUALSDate, DateBoolean日期比较,忽略时分秒
[2016-05-22 16:40:00]与[2016-05-22 23:40:00]返回true

Step2:实现Step1配置文件中的Functions类及test方法,参数类型是String。

[java] view plain copy
  1. public class Functions {  
  2.     public String test(String name) {  
  3.         return "hi, " + name;  
  4.     }  
  5. }  


Step3:编写main运行表达式

[java] view plain copy
  1. String expression = "$test(name)";  
  2. List<Variable> varialbes = new LinkedList<Variable>();  
  3. varialbes.add(Variable.createVariable("name""IKExpression"));  
  4. Object result = ExpressionEvaluator.evaluate(expression, varialbes); // result=hi, IKExpression  


至此,IKExpression可以添加到项目中使用了。


jar包:IKExpression.2.1.2.jar

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果手机微信数据损坏怎么办 微信文件被清理怎么办 老婆与别人聊暧昧话题怎么办 微信不小心删了聊天记录怎么办 当聊天没话题了怎么办 老婆和别人频繁聊天老公怎么办 qq上把人屏蔽了怎么办 注册微信验证码发不出去怎么办 两个人在一起没有话题怎么办 两个人聊天没话题怎么办 qq邮箱限制信用卡账单怎么办 和朋友聊天没话题怎么办 跟朋友聊天没话题怎么办 和朋友聊天找不到话题怎么办 qq加好友忽略了怎么办 微信加好友收不到验证消息怎么办 陌陌距离乱了怎么办 qq不能点赞了怎么办 快递发货地址写错了怎么办 订的海鲜不发货怎么办 拉人进群频繁了怎么办 qq群邀请过于频繁怎么办 qq一直被拉进群怎么办 qq号被冻结解封不了怎么办 2018qq自动进群怎么办 手机视频传到电脑倒着怎么办 qq群图片过期了怎么办 q号加不了群怎么办 q号加不了好友怎么办 q号被冻结了怎么办 qq群200人满了怎么办 畅聊之火消失了怎么办 手机版WPS打开文档空白怎么办 空白表格怎么打印不出来怎么办 微信朋友太少怎么办 js和CSS加载失败怎么办 熹妃q传密码忘了怎么办 苹果手机淘宝占用空间大怎么办 苹果相册储存空间不足怎么办 企业网银里的收款名单丢失怎么办 发邮件发错了怎么办