2015-04-17 28 views
0

我正在開發一個windows phone 8.1的應用程序。我想在運行時執行一個存儲在字符串變量中的表達式。例如:執行表達式存儲在一個字符串中

  string exp = "4+5-2"; 

我可以通過下面的代碼在桌面應用程序做到這一點:

  MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); 
      sc.Language = "VBScript"; 
      object result = sc.Eval(expr); 

但這種代碼是不工作在那裏。它導致應用程序崩潰。

+2

的可能重複的[C#評價字符串 「3 \ *(4 + 2)」 產量INT 18](http://stackoverflow.com/questions/333737/c-sharp-evaluating-string-342-yield-int -18) – LiamK

+0

不,我需要一個可以在windows phone app上執行的代碼的幫助。 – Bilal

+0

你不能在LiamK的評論中使用SébastienRos - MSFT發佈的答案嗎? –

回答

1

你可以使用Jace.NET(僅僅是另一種計算引擎)NuGet包。它支持WP8.1:

private CalculationEngine engine = new CalculationEngine(); 

private void ExecuteButton_Click(object sender, RoutedEventArgs e) 
{ 
    double result = engine.Calculate(ExpressionTextBox.Text); 
    ExpressionTextBox.Text = result.ToString(); // displays the result 
} 

欲瞭解更多信息檢查Github這個link和其存儲庫。

+0

謝謝你很多。它解決了我的問題。 – Bilal

1

如果您不想使用重複問題或評論中建議的任何軟件包,並且真的只想推出自己的解析器,那麼Shunting-yard algorithm就像任何軟件一樣好。從維基百科獲取僞代碼並在C#中實現它。

作爲獎勵,你很可能添加一些邏輯超越基本的算術運算與算法,如果你真的需要它(例如支持按名稱調用函數)。

相關問題