使用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);