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 });
    }
    }

  • 相关阅读:
    1951: [Sdoi2010]古代猪文
    BZOJ 1911: [Apio2010]特别行动队[斜率优化dp]
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)&&莫队算法
    gdb命令整理
    1833: [ZJOI2010]count 数字计数
    1227: [SDOI2009]虔诚的墓主人
    P3197 [HNOI2008]越狱
    3505: [Cqoi2014]数三角形
    P3414 SAC#1
    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
  • 原文地址:https://www.cnblogs.com/mojiejushi/p/13377415.html
Copyright © 2011-2022 走看看