您的位置:首页 > 编程语言 > Java开发

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>

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]
SYSDATEDate获取当前系统时间
DATEEQUALSDate, DateBoolean日期比较,忽略时分秒
[2016-05-22 16:40:00]与[2016-05-22 23:40:00]返回true
Step2:实现Step1配置文件中的Functions类及test方法,参数类型是String。

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

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IKExpression Java