大家都遇到过,计算一个字符串算式的问题,解决起来挺麻烦的。我在一年前想过一个办法,就是连 一下数据库,执行“Select [算式] as Result”,从而得到结果。这几天因对公司程序的优化,我的这 个模块要摆脱数据库,所以这种方法也就不能用了。结果从网上查结果,也没有找到确切的办法。
最后绞尽脑汁想了一个这样的方法:
using System;
public static class WwmEval
{
static System.Windows.Forms.WebBrowser wb;
static WwmEval() {
wb = new System.Windows.Forms.WebBrowser();
wb.DocumentText = @"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN""><html><head><script type=""text/javascript"">function myEval(ss){ return eval(ss);} </script></head><body></body></html>";
}
public static double Eval(string Expressions) {
return Convert.ToDouble(wb.Document.InvokeScript("myEval", new object[] { Expressions }));
}
}
最后调用,WwmEval.Eval("2*(100+100)");结果是:400;
不过这样还不是很完美。由于是按需编译的,所以在第一次调用时结果是0,我记得有一个特性可以强 编译!具体是那个,怎么解决,望各位前辈帮我。我可能孤陋寡闻,这样做太笨,也望前辈们指教。