美文网首页
C#将字符串转换成表达式执行输出运算结果的源码

C#将字符串转换成表达式执行输出运算结果的源码

作者: fengqinyang | 来源:发表于2019-01-15 13:14 被阅读0次

研发闲暇时间,将写代码过程中重要的代码做个珍藏,下面的代码是关于C#将字符串转换成表达式执行输出运算结果的的代码,应该对各位有用处。

using System; 

using System.Collections.Generic; 

using System.Text; 

using System.Reflection; 

namespace Common.Doing 

    public class Evaluator 

    { 

        public static object Eval(string statement) 

        { 

            return _evaluatorType.InvokeMember( 

                        "Eval", 

                        BindingFlags.InvokeMethod, 

                        null, 

                        _evaluator, 

                        new object[] { statement } 

                    ); 

        } 

        static Evaluator() 

        { 

            CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript"); 

            CompilerParameters parameters; 

            parameters = new CompilerParameters(); 

            parameters.GenerateInMemory = true; 

            CompilerResults results; 

            results = provider.CompileAssemblyFromSource(parameters, _jscriptSource); 

            Assembly assembly = results.CompiledAssembly; 

            _evaluatorType = assembly.GetType("Evaluator"); 

            _evaluator = Activator.CreateInstance(_evaluatorType); 

        } 

        private static object _evaluator = null; 

        private static Type _evaluatorType = null; 

        private static readonly string _jscriptSource = 

            @" import SharpDll; 

                class Evaluator 

              { 

                  public function Eval(expr : String) : String 

                  { 

                      return eval(expr); 

                  } 

                public function RoundUp(numVar:double,len:int):double 

                    var numRev:double = 0; 

                    var dindex:int = numVar.ToString().IndexOf("+"".""+ @"); 

                    if (dindex> -1) 

                    { 

                        if (len == 0) 

                        { 

                            if (int.Parse(numVar.ToString().Substring(dindex+1))> 0) 

                            { 

                                numRev = double.Parse(numVar.ToString().Substring(0,dindex))+ 1; 

                            } 

                        } 

                        if (len > 0) 

                        { 

                            if ((dindex + len) > numVar.ToString().Substring(dindex).Length) 

                            { 

                                numRev = numVar; 

                            } 

                            else 

                            { 

                                if (int.Parse(numVar.ToString().Substring(dindex + len+1)) > 0) 

                                { 

numRev = double.Parse(tempnum.ToString().Insert(tempnum.ToString().Length - len, " + ""."" + @")); 

                                } 

                                else 

                                { 

numRev = double.Parse(numVar.ToString().Substring(0, dindex + len)); 

                                } 

                            } 

                        } 

                    } 

                    else 

                    { 

                        numRev = numVar; 

                    } 

                    return numRev; 

                } 

                public function invokeInt(len:int):int 

                { 

                    var TempVal:String = "+""1""+ @"; 

                    var i:int = 0; 

                    while(i<len) 

                    { 

                        TempVal = TempVal+" + ""0"" + @"; 

                        i++; 

                    } 

                    return int.Parse(TempVal); 

                } 

              }"; 

    } 

}

调用方法

MessageBox.Show(Evaluator.Eval(exp).ToString()); 

相关文章

  • C#将字符串转换成表达式执行输出运算结果的源码

    研发闲暇时间,将写代码过程中重要的代码做个珍藏,下面的代码是关于C#将字符串转换成表达式执行输出运算结果的的代码,...

  • LLDB调试技巧

    LLDB命令 expression :作用是执行一个表达式,并将表达式返回的结果输出 执行某个表达式 将返回值输出...

  • Shell 基本运算符(练习)

    算数运算符 执行脚本,输出结果如下所示: 关系运算符 执行脚本,输出结果如下所示: 布尔运算符 执行脚本,输出结果...

  • jdk源码:Integer.getChars(int i, in

    1. 应用:将整形数字转换成对应的十进制字符串 2. 测试代码 执行结果: 3. 源码分析: getChars(i...

  • 二、流程控制(Python基础)

    数据执行 1、顺序执行 输出结果: 2、选择执行 输出结果:a > 100 或使用三目运算(if else的简写)...

  • 2018-08-03 python学习re模块方法

    1.compile(正则字符串) 将正则表达式字符串转换成正则表达式对象 转换成正则表达式对象后,可以通过对象调用...

  • 2019-06-29

    整数相加输出整数运算结果。字符和整数相加会输出字符ASCII码和整数的运算结果。而字符串再加其他类型都为字符串。 ...

  • 逻辑运算符( && || ! )

    逻辑与运算符(&&) 对两个表达式执行逻辑与运算(相当于英语中 and 的意思) 语法: 运算结果 = 表达式1 ...

  • 二、基本运算

    一、运算符 运算符是指定要在表达式中执行哪些操作(数学、索引、函数调用等等)的符号。 运算符分类:C#语言继承了C...

  • day15正则表达式

    正则表达式符号 正则表达式符号组合 模块方法 compile:(正则字符串) 将正则表达式字符串转换成正则表达式对...

网友评论

      本文标题:C#将字符串转换成表达式执行输出运算结果的源码

      本文链接:https://www.haomeiwen.com/subject/tntydqtx.html