很抱歉,如果已经回答了这个问题,但我找不到合适的答案。 我在C#中有一个字符串表达式,我需要将其转换为int或decimal值。
例如:
string strExp = "10+20+30";
输出应为60。
我该怎么做?
答案 0 :(得分:6)
答案 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);