首页 > 编程语言 > 详细

Java 实现String语句的执行(Jexl)

时间:2019-02-15 11:05:31      阅读:816      评论:0      收藏:0      [点我收藏+]

https://www.jianshu.com/p/1000719e49fa

1.maven 导入库

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl</artifactId>
<version>2.0</version>
</dependency>

2.代码实例

import org.apache.commons.jexl2.Expression;
import org.apache.commons.jexl2.JexlContext;
import org.apache.commons.jexl2.JexlEngine;
import org.apache.commons.jexl2.MapContext;

import java.util.HashMap;
import java.util.Map;

/**
 * A Camel Application
 */
public class MainApp {

    /**
     * A main() so we can easily run these routing rules in our IDE
     */
    public static Object convertToCode(String jexlExp, Map<String, Object> map) {
        //创建或检索引擎
        JexlEngine jexl = new JexlEngine();
        //创建一个表达式
        Expression e = jexl.createExpression(jexlExp);
        //创建上下文并添加数据
        JexlContext jc = new MapContext();
        for (String key : map.keySet()) {
            jc.set(key, map.get(key));
        }
        //现在评估表达式,得到结果
        if (null == e.evaluate(jc)) {
            return "";
        }
        return e.evaluate(jc);
    }

    public static void main(String... args) throws Exception {
        try {
            Map<String, Object> map = new HashMap<String, Object>(16);
            map.put("money", 6100);
            String expression = "money>=2000&&money<=4000";
            Object code = convertToCode(expression, map);
            System.out.println((Boolean) code);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

3. 补充:c# Asp.net

using System.Web.Script.Serialization;

 public static object EvalJscript(string str)
    {
        object Result = null;
        str = str.Replace("OR", "||");
        str = str.Replace("AND", "&&");
        if (ve == null)
        {
            ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
        }
        Result = Microsoft.JScript.Eval.JScriptEvaluate(str, ve);

        return Result;
    }


作者:咖啡机an
链接:https://www.jianshu.com/p/1000719e49fa
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Java 实现String语句的执行(Jexl)

原文:https://www.cnblogs.com/kakaisgood/p/10382309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!