代码之家  ›  专栏  ›  技术社区  ›  Ralf de Kleine

对字符串“3+4”中的值执行计算

c#
  •  1
  • Ralf de Kleine  · 技术社区  · 15 年前

    对字符串中的值进行计算的最佳方法是什么,例如: "(3.25 * 4) / 1.25 + 10"

    3 回复  |  直到 15 年前
        1
  •  7
  •   Sorantis    15 年前

    您需要编写数学公式解析器。 如果你不想把这个写出来

    http://www.codeproject.com/KB/cs/MathParserLibrary.aspx

        2
  •  1
  •   GreyCloud    13 年前

    你看到了吗 http://ncalc.codeplex.com ?

    它是可扩展的、快速的(例如有自己的缓存),使您能够通过处理EvaluateFunction/EvaluateParameter事件在运行时提供自定义函数和变量。它可以解析的示例表达式:

    Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
    
      e.Parameters["Pi2"] = new Expression("Pi * Pi");
      e.Parameters["X"] = 10;
    
      e.EvaluateParameter += delegate(string name, ParameterArgs args)
        {
          if (name == "Pi")
          args.Result = 3.14;
        };
    
      Debug.Assert(117.07 == e.Evaluate());
    

    它还处理unicode&许多数据类型都是本地的。如果你想更改语法,它附带一个鹿角锉。还有一个fork支持MEF加载新函数。

        3
  •  0
  •   Charlie Salts    15 年前

    将中缀符号转换为后缀符号是解决此问题的一种方法,因为您可以使用堆栈来解析和计算表达式。

    网上有十几种解决方案。这是 one of them .