论坛首页 Java企业应用论坛

发布IK Expression开源表达式解析器 V2.1.2

浏览 15281 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-03   最后修改:2009-10-03
Version2.1.2的变更:

1.根据网友提出的要求,修订了对未声明变量的处理,早期版本不允许变量未申明,将抛出异常。新版本将未申明变量视为 null,这样解决了上下文中对不存在的变量的判断问题,如 “variable == null”将返回 true。


下载地址:
IKExpressionV2.1.2 完整发布包

IKExpressoin简易表达式引擎V2.1.0使用说明.pdf

google code开源地址:http://code.google.com/p/ik-expression/

更多详细请参阅RAR包内的《IKExpressoin简易表达式引擎V2.1.0使用说明.doc》文档
   发表时间:2009-10-10  
String text = "薇欧薇VOV化妆调肤粉底液(2色)普通装规格另见包装";
String keyword = "粉底乳";

使用官方3.1.1PDF中的例子,居然不能命中。。

第一次使用,程序中如何写才能命中这句?
1 请登录后投票
   发表时间:2009-10-10  
gtman 写道
String text = "薇欧薇VOV化妆调肤粉底液(2色)普通装规格另见包装";
String keyword = "粉底乳";

使用官方3.1.1PDF中的例子,居然不能命中。。

第一次使用,程序中如何写才能命中这句?


兄弟,你发错帖子了吧




0 请登录后投票
   发表时间:2009-11-12  
楼主~
  
    我发现我对不同数据类型的字符串连接:“ABC”+(123+10),会报错。。
代码如下:
  	public static void main(String[] args) {
		// TODO Auto-generated method stub		
				String expression = "ABC+(123+10)";
				Object result=ExpressionEvaluator.evaluate(expression, null);
				
				System.out.println("Result=" + result);
				
		}

报错如下:
  表达式不合法,变量"ABC"缺少定义;位置:0
处理对象:ABC
处理位置:0
at org.wltea.expression.ExpressionExecutor.convertToRPN(ExpressionExecutor.java:85)
at org.wltea.expression.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:43)
at com.sunyard.expression.operate.TestOne.main(TestOne.java:22)
Exception in thread "main" java.lang.RuntimeException: 表达式:"ABC+(123+10)" 执行异常
at org.wltea.expression.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:52)
at com.sunyard.expression.operate.TestOne.main(TestOne.java:22)
0 请登录后投票
   发表时间:2009-11-12  
然后,我定义了String ABC="ABC";
String expression = ABC+"(123+10)";
也报类型的错。。

0 请登录后投票
   发表时间:2009-11-12  
Xiehgjava 写道
楼主~
  
    我发现我对不同数据类型的字符串连接:“ABC”+(123+10),会报错。。
代码如下:
  	public static void main(String[] args) {
		// TODO Auto-generated method stub		
				String expression = "ABC+(123+10)";
				Object result=ExpressionEvaluator.evaluate(expression, null);
				
				System.out.println("Result=" + result);
				
		}

报错如下:
  表达式不合法,变量"ABC"缺少定义;位置:0
处理对象:ABC
处理位置:0
at org.wltea.expression.ExpressionExecutor.convertToRPN(ExpressionExecutor.java:85)
at org.wltea.expression.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:43)
at com.sunyard.expression.operate.TestOne.main(TestOne.java:22)
Exception in thread "main" java.lang.RuntimeException: 表达式:"ABC+(123+10)" 执行异常
at org.wltea.expression.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:52)
at com.sunyard.expression.operate.TestOne.main(TestOne.java:22)


哈哈,你漏了一层的引号啊。

String expression = "ABC+(123+10)",这个对于表达式而言,等价于 ABC+(123+10);ABC没有引号,表达式将认为这个是你声明的变量。

你希望的表达式要写成  String expression = "\"ABC\"+(123+10)"
0 请登录后投票
   发表时间:2009-11-12  
Xiehgjava 写道
然后,我定义了String ABC="ABC";
String expression = ABC+"(123+10)";
也报类型的错。。



汗死,你这个定义的是java变量啊,你要设置到表达式上下文中啊,看一下文档吧
0 请登录后投票
   发表时间:2009-11-12  
linliangyi2007 写道
Xiehgjava 写道
然后,我定义了String ABC="ABC";
String expression = ABC+"(123+10)";
也报类型的错。。



汗死,你这个定义的是java变量啊,你要设置到表达式上下文中啊,看一下文档吧

啊,原来如此,谢谢楼主~~~楼主回贴真及时,谢谢!!
0 请登录后投票
   发表时间:2009-11-12  
我这边刚好需要对数据进行处理,然后想以表达式的形式记录每个字段的处理方式,以后该字段就根据这个表达式来进行自动的处理。
当然这个表达式有业务人员来配置,我只用关注需要抽象出来的方法即可,不知道楼主有没有什么好的建议可以借鉴一下么?
0 请登录后投票
   发表时间:2009-11-12  
Xiehgjava 写道
我这边刚好需要对数据进行处理,然后想以表达式的形式记录每个字段的处理方式,以后该字段就根据这个表达式来进行自动的处理。
当然这个表达式有业务人员来配置,我只用关注需要抽象出来的方法即可,不知道楼主有没有什么好的建议可以借鉴一下么?


从你的描述上看,IK应该适用。我们这边的OA也是这么用的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics