• 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')");

     

  • 相关阅读:
    第十三周助教总结
    C语言I博客作业09
    第十二周助教总结
    C语言I博客作业08
    第十一周助教总结
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I作业07
    C语言I作业06
  • 原文地址:https://www.cnblogs.com/surfsky/p/12918607.html
Copyright © 2020-2023  润新知