IKExpressionV2.1.2快速入门

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





     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值