Оценить строку С# с помощью математических операторов
Есть ли простой способ оценить строки, такие как
"(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. Ниже приведены ресурсы: