使用C#将字符串表达式转换为整数值

时间:2010-04-09 13:28:29

标签: c# string integer

很抱歉,如果已经回答了这个问题,但我找不到合适的答案。 我在C#中有一个字符串表达式,我需要将其转换为int或decimal值。

例如:

string strExp = "10+20+30";

输出应为60。

我该怎么做?

5 个答案:

答案 0 :(得分:6)

.NET中没有内置任何内容,因此您需要使用数学表达式解析器并使用它来获取结果。

Here就是一个。还有一个couple articles

答案 1 :(得分:6)

使用NCalc:稳定,简单,功能强大

答案 2 :(得分:5)

Fwiw,.NET框架中内置了一个表达式解析器。 DataTable.Compute()方法使用它:

using System;
using System.Data;

class Program {
    static void Main(string[] args) {
        var expr = "10 + 20 + 30";
        var result = new DataTable().Compute(expr, null);
        Console.WriteLine(result);
        Console.ReadLine();
    }
}

但请注意,它不是一个功能齐全的功能。只有简单的表达式,你在SQL查询中找到的那种。

答案 3 :(得分:0)

您需要通过分隔数字和运算符(+, - ,*,/等)来解析字符串。可以使用.TryParse命令(例如Int32.TryParse())将数字转换为整数或小数。可以使用switch语句处理运算符。你希望能够处理的表达式越复杂越复杂。您可以使用递归来处理括号中的子表达式。

编辑:我会找一些样本文章,但我看到Oded已经发布了一些。

答案 4 :(得分:0)

也许使用脚本库 - IronPython(python),cs-script(c#)甚至MSScriptControl(VBscript) - 然后您可以将字符串表达式传递给库进行评估。

使用MSScript控件的示例:

使用MSScriptControl;

...

ScriptControl ScriptEngine = new ScriptControlClass();

ScriptEngine.Language =“VBScript”;

string expr =“10 + 20 + 30”;

object result = ScriptEngine.Eval(expr);

decimal d = Convert.ToDecimal(result);