Evaluate string with math operators [duplicate]
Is there an easy way to evaluate strings like
"(4+8)*2"
So that you'd get the int value of 24?
Or is there a lot of work needed to get this done...?
Solution 1:
Someone else added this and then it got deleted. I thought it was pretty cool because no 3rd party libraries required.
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"]); } }
Solution 2:
Use Ncalc:
Expression e = new Expression("(4+8)*2");
Debug.Assert(24 == e.Evaluate());
http://ncalc.codeplex.com/
Also, this question had been previously asked and has some interesting answers including Ncalc : Evaluating string "3*(4+2)" yield int 18
Solution 3:
You need a Math Expression Parser for that. Below are resources on that:
- (commercial) http://www.bestcode.com/html/bcparser_net.html
- (open source) http://ncalc.codeplex.com/
- https://github.com/pieterderycke/Jace#jacenet
- http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx
- http://www.codeproject.com/KB/recipes/matheval.aspx