Оценить строку С# с помощью математических операторов Есть ли простой способ оценить строки, такие как "(4+8)*2" Чтобы получить значение int 24? Или нужно много работы, чтобы это сделать...? Ответ 1 Использовать Ncalc: Expression e = new Expression("(4+8)*2"); Debug.Assert(24 == e.Evaluate()); http://ncalc.codeplex.com/ Кроме того, этот вопрос был предварительно задан и содержит некоторые интересные ответы, в том числе Ncalc: Оценка строки "3 * (4 + 2)" выход int 18 Ответ 2 Кто-то добавил это, а затем удалился. Я думал, что это довольно круто, потому что не требуется сторонних библиотек. 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"]); } } Ответ 3 Для этого вам нужен Mars Expression Parser. Ниже приведены ресурсы: (коммерческий) http://www.bestcode.com/html/bcparser_net.html (с открытым исходным кодом) 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
Ответ 1 Использовать Ncalc: Expression e = new Expression("(4+8)*2"); Debug.Assert(24 == e.Evaluate()); http://ncalc.codeplex.com/ Кроме того, этот вопрос был предварительно задан и содержит некоторые интересные ответы, в том числе Ncalc: Оценка строки "3 * (4 + 2)" выход int 18
Ответ 2 Кто-то добавил это, а затем удалился. Я думал, что это довольно круто, потому что не требуется сторонних библиотек. 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"]); } }
Ответ 3 Для этого вам нужен Mars Expression Parser. Ниже приведены ресурсы: (коммерческий) http://www.bestcode.com/html/bcparser_net.html (с открытым исходным кодом) 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