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...?
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"]);
}
}
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
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
加载中,请稍侯......
精彩评论