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

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

例如:

string strExp = "10+20+30"; 

输出应为60。

我该怎么办?

使用NCalc :稳定,简单,function强大

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

这是一个。 还有几篇文章 。

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(); } } 

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

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

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

也许使用脚本库 – 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);