日期:2014-05-18  浏览次数:20872 次

C#求字符串表达式值
用C#如何求字符串表达式值,如:string s="(8+2)*8.8";如何求得值88呢?有这样的函数吗?好像vbscript里面有个eval函数可以实现,不知到C#如何实现求值呢?望高手们赐教!!

------解决方案--------------------
自己写个函数。。。
------解决方案--------------------
Microsoft.JScript.Vsa.VsaEngine ve=Microsoft.JScript.Vsa.VsaEngine.CreateEngine();

 return Microsoft.JScript.Eval.JScriptEvaluate(Expression,ve);


------解决方案--------------------
两个栈,一个存运算符,一个存操作数,如果要入栈的运算符优先级低于栈顶,则(弹出栈顶运算符,弹出两个操作数,计算结果,压入操作数栈中),然后压入运算符。如果碰到右扩号的话,那就一路弹出直到左扩号。并按照弹出顺序,进行计算
------解决方案--------------------
参考: http://www.codeproject.com/csharp/runtime_eval.asp