第一種解決方案
第一種也是功能最強大的一種,可以使用Eval函數,像在Java中一樣強大,幾乎所有的運算符都可以實現,包括四則運算,與或非等。
添加COM引用:
private void button2_Click(object sender, EventArgs e) { MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass(); sc.Language = "JavaScript"; MessageBox.Show(sc.Eval("((2*3)-5+(3*4))+6/2").ToString());//1+12+3 }
在引用COM組件的時候,出現了無法嵌入互操作類型“……”,請改用適用的接口的錯誤提示。查閱資料,找到解決方案,記錄如下:
選中項目中引入的dll,鼠標右鍵,選擇屬性,把“嵌入互操作類型”設置為False。
第貳種解決方案
簡單的四則運算或判斷可以使用DataTable.Compute來實現。
DataTable dt = new DataTable(); MessageBox.Show(dt.Compute("1*2+3", "false").ToString());
//替換公式 string formula = "K*(F0+Fi)"; double K = 0.0D, F0 = 3.0F, Fi = 10.0F; formula = formula.Replace("K", "{0}"); formula = formula.Replace("F0", "{1}"); formula = formula.Replace("Fi", "{2}"); formula = string.Format(formula, K, F0, Fi); DataTable dt = new DataTable(); string really_data = dt.Compute(formula, "false").ToString();
第叄種解決方案
第三種比較耗費性能,局限性較大,就是在用SQL語句來實現。SQL中的select語句也可以實現計算。
string strConn = "Data Source=127.0.0.1;Initial Catalog=CementCartDB;Persist Security Info=True;User ID=sa;Password=123456" conn = new SqlConnection(strConn); conn.Open(); cmd = conn.CreateCommand(); string biaodashi = "1&1"; cmd.CommandText = "select "+biaodashi; string o = cmd.ExecuteScalar().ToString(); MessageBox.Show(o);
以上是我總結的字符串轉換為運算符的幾種方式。自己備份的同時希望對大家也有所幫助。
評論給出的其他辦法:文中的三種方法均不太好,還有一種更好的方法,可參考: https://pzy.io/archives/2019/10/calculating-string-formula.html