zoukankan      html  css  js  c++  java
  • c# 将字符串转换为逻辑表达式(字符串转换布尔)

    比如:string str="6>5";

    要的效果是:bool result=6>5

    方案1:

    命名空间:System.Data;

     DataTable dt = new DataTable();

     bool result= (bool)dt.Compute("","");dt.Compute(str, "");

    方案2:

    public class Expression
    {
    object instance;
    MethodInfo method;
    /// <summary>
    /// 表达试运算
    /// </summary>
    /// <param name="expression">表达试</param>
    public Expression(string expression)
    {
    if (expression.IndexOf("return") < 0) expression = "return " + expression + ";";
    string className = "Expression";
    string methodName = "Compute";
    CompilerParameters p = new CompilerParameters();
    p.GenerateInMemory = true;
    CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(p, string.
    Format("using System;sealed class {0}{{public bool {1}(bool x){{{2}}}}}",
    className, methodName, expression));
    if (cr.Errors.Count > 0)
    {
    string msg = "Expression("" + expression + ""): ";
    foreach (CompilerError err in cr.Errors) msg += err.ToString() + " ";
    throw new Exception(msg);
    }
    instance = cr.CompiledAssembly.CreateInstance(className);
    method = instance.GetType().GetMethod(methodName);
    }
    /// <summary>
    /// 处理数据
    /// </summary>
    /// <param name="x"></param>
    /// <returns>返回计算值</returns>
    public bool Compute(bool x)
    {
    return (bool)method.Invoke(instance, new object[] { x });
    }
    }

  • 相关阅读:
    教育行业漏洞报告平台(Beta)数据爬取分析
    对三国演义人物出现次数统计分析
    用turtle画一个雪人
    python慕课笔记
    浮动的特性
    传统网页布局的三种方式
    CSS盒子阴影
    HTTP协议
    盒子 圆角边框
    Tomcat+Idea项目的发布、war包的导出
  • 原文地址:https://www.cnblogs.com/mojiejushi/p/13377415.html
Copyright © 2011-2022 走看看