2011-04-30 97 views
10

有沒有簡單的方法來評估字符串,如 "(4+8)*2" 這樣你就可以得到24的int值?用數學運算符評估C#字符串

還是有很多工作需要做到這一點...?

+1

可以看看:[表達式計算器重新(EVAL在100%管理的.NET函數)](http://www.codeproject.com/KB/recipes/eval3.aspx) – 2011-04-30 01:53:47

回答

31

別人加入這個,然後將其刪除了。我認爲這很酷,因爲沒有第三方庫需要。

class Program 
    { 

     static void Main(string[] args) 
     { 
      Console.WriteLine(Evaluate("(4+8)*2")); 
      Console.ReadKey(); 
     } 

     public static double Evaluate(string expression) 
     { 
      DataTable table = new DataTable(); 
      table.Columns.Add("expression", typeof(string), expression); 
      DataRow row = table.NewRow(); 
      table.Rows.Add(row); 
      return double.Parse((string)row["expression"]); 
     } 

    } 
+0

在我的使用,這個解決方案比NCalc快大約1.5倍,而同樣穩定(至少對於我所做的)。它處理的布爾表達式與NCalc相同。這應該更廣告。 – tootsiejasmine 2013-10-09 04:46:34

+0

這不處理權力或平方根。 – seekerOfKnowledge 2013-10-15 19:26:37

+0

這個解決方案非常適合簡單的表達,因爲我需要它。感謝您重新發布它。 – zreptil 2014-03-09 08:03:18