在C#中解析和解决表达式的任何更简单的方法?

时间:2015-02-13 20:14:10

标签: c#

我正在尝试评估以字符串

输入的表达式

示例:string svar1="1 * 2 * 3";

我需要能够评估回答6。

我正在考虑用空格解析它,然后将操作符与开关匹配到每个函数(需要做+, - ,*,/,%等),但这似乎是一个非常繁琐的方式,因为有这么多运营商代码。有没有办法将包含运算符的char / string转换为实际运算符?

4 个答案:

答案 0 :(得分:4)

一种简单的方法是使用DataTable.Compute Method

    static void Main(string[] args)
    {
        DataTable table = new DataTable();

        var result = table.Compute("1 * 2 * 3","");
    }

答案 1 :(得分:1)

不,此功能未包含在任何标准.NET程序集中。你的方法除了单调乏味外,还容易出错。

您正在寻找数学表达式解析器,NCalc就是这样一个库。

答案 2 :(得分:0)

看起来像一个名为NCalc的库可以完成你需要的东西。

Evaluating string "3*(4+2)" yield int 18

答案 3 :(得分:0)

如果你想要一些见解/代码来证明这是如何正确完成的,使用正确的优先规则,在C#中这是一个很好的文章序列:

http://ericwhite.com/blog/map/recursive-descent-parser/