web-dev-qa-db-ja.com

数学演算子を使用して文字列を評価する

"(4+8)*2"のような文字列を評価してint値24を取得する簡単な方法はありますか?

それとも、これを行うために必要な作業がたくさんありますか...?

12
Mark Lalor

Ncalcを使用する:

Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());   

http://ncalc.codeplex.com/

また、この質問は以前に尋ねられたものであり、Ncalcを含むいくつかの興味深い回答があります: 文字列 "3 *(4 + 2)"を評価するとint 18

19
manojlds

他の誰かがこれを追加した後、削除されました。サードパーティのライブラリが必要ないので、かなりクールだと思いました。

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"]); 
} 
 
} 
38
5
Teoman Soygul