C#中 字符串轉換為計算公式,並計算結果


       根據總結,大概分為以下三種:

    第一種: 用DataTable中的Compute方法。

    例如:" 1*2*3 "

    代碼如下:

   var a = new System.Data.DataTable().Compute("1*2*3", ""); 
   //結果a=>6

    第二種:利用javascript中的Eval方法解析.此方法需引入添加COM引用:Microsoft Sctipt Control 1.0  

        在使用過程中,若出現無法嵌入互操作類型“MSScriptControl.ScriptControlClass”,則可以這樣操作。右擊MSScriptControl程序集--〉屬性--〉嵌入互操作類型--〉改為false

        讓我們看下這個方法的強大之處:

        例如:"1*2*3"

        此方法還能解析像這種等字符串 :“if(3>2){  1 }else {  2}”

    代碼如下:

 MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
                sc.Language = "javascript";
                var b = sc.Eval("1*2*3");
    //結果b=>6

    第三種: 引入添加.net 引用 Microsoft.JScript 和Microsoft.Vsa 

        個人認為此方法跟方法二是一樣的,具體區別不清楚 

        例如:"1*2*3"

        此方法還能解析像這種等字符串 :“if(3>2){  1 }else {  2}”,跟方法二一樣。

    代碼如下:

    

 Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
                var c = Microsoft.JScript.Eval.JScriptEvaluate("1*2*3", ve);  
    //結果c=>6

    總結,項目中難免會出現類似這種情況,我個人認為,如果只是簡單的計算,第一種無疑是最方便的,若是有邏輯的字符串需要解析,就用第二種或者是第三種。

    個人喜歡。

    本文到此結束。謝謝觀賞。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM