日期:2014-05-17  浏览次数:20888 次

求c# 带条件判断的字符串 复杂计算解决办法,高难度!
最近碰到个棘手的问题,在32位的window2003系统里,可以利用一下办法解决,单发布服务器是64位的window2003 查遍资料,也没找到替代办法,希望大牛们能给个解决办法,谢谢了

        //利用JS中强大的Eval函数 可以带if-else判断 添加COM引用:Microsoft Sctipt Control 1.0
        //但这个方法在2003 64位服务器版本里没法用,求解决办法
        MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
        sc.Language = "JavaScript";
        string formulate1 = string.Format("if({0}==2)((({0}*{1})-{3}+({1}*{2}))+{4}/{0});else(1+2*3)", 2, 3, 4, 5, 6);
        object objResult = sc.Eval(formulate1);
        if (objResult != null)
        {
            Response.Write(objResult.ToString());//1+12+3   
        }  

------解决方案--------------------
可以试试
string formulate1 = string.Format("if({0}==2)((({0}*{1})-{3}+({1}*{2}))+{4}/{0});else(1+2*3)", 2, 3, 4, 5, 6);
               string ExecEval=@"<script language='javascript' type='text/javascript'>  
                                       function execEval(para){  
                                         return eval(para);
                                       }</script>";//定义脚本  
                WebBrowser wb = new WebBrowser();
                wb.DocumentText = @"<html> <head>" + ExecEval + "</head><body></body></html>";//定义WebBrowser中的DOM文档   
               wb.DocumentCompleted+=(o,args)=>{  
                   var temp=wb.Document.InvokeScript("execEval",new object[]{formulate1});//执行脚本函数   
                   MessageBox.Show(temp.ToString());//弹出16
               }; 

------解决方案--------------------
以前也做过 这样的算工资的 是分条件判断 用Compute来计算的


------解决方案--------------------