• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Kevin Cheng's Yard
电脑是我的老婆,编程是我的灵魂,代码是我的语言,按键是我在歌唱。
https://github.com/surfsky/
博客园    首页    新随笔    联系   管理    订阅  订阅

netcore 下的 Javascript 表达式求值

netframework 下的 codedom 代码已经不能用了,会报错,改用 Jint 来写:

 

先安装包

install-package Jint

核心代码

    using Jint;
    public class JsEvaluator
    {
        static Engine _engine;
        static JsEvaluator()
        {
            _engine = new Engine();
        }

        /// <summary>解析表达式值</summary>
        public object Eval(string expression)
        {
            var cmd = $"eval({expression.Quote()})";
            return _engine.Execute(cmd).GetCompletionValue().ToObject();
        }

        /// <summary>
        /// 转化为日期时间必须用这个函数。格式如:new Date('2018/01/01 12:00:00')
        /// </summary>
        public DateTime EvalDateTime(string expression)
        {
            var cmd = $"eval({expression.Quote()}).toLocaleString()";
            var o = _engine.Execute(cmd).GetCompletionValue().ToObject();
            return Convert.ToDateTime(o);
        }
    }

 

可以快乐的测试了

var eval = new JsEvaluator();
var b = eval.Eval("5 > 4");
var d = eval.Eval("2.5");
var o = eval.Eval("new Date()");
var t = eval.EvalDateTime("new Date('2018/01/01 12:00:00')");

 

 

 

转载请注明出处:http://surfsky.cnblogs.com 

posted @ 2020-05-19 18:17  surfsky  阅读(410)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3