[英]How to evaluate an arithmetical expression given as string
我做了一個GUI計算器。 因此,當有人按下按鈕時,數字和符號會顯示在標簽中,然后當他們按下Enter時,計算機會捕獲字符串,這就是我需要幫助的地方。 我知道在Python中有一個eval語句可用於C#中。
這是代碼,如果有幫助。 具體看一下方法button_click
public class form1 : Form
{
private Label lab;
private Button button2;
private Button button;
private Button plus;
private MathFunctions.MathParser calc;
public static void Main()
{
Application.Run(new form1());
}
public form1()
{
// Initialize controls
...
}
private void button_Click(object sender,System.EventArgs e)
{
string answer = lab.Text;
}
private void button2_Click(object sender,System.EventArgs e)
{
lab.Text = lab.Text + "2";
}
private void button_plus(object sender,System.EventArgs e)
{
lab.Text = lab.Text + "+";
}
}
在C#中,您沒有評估。 原則上,您可以在運行時生成代碼,對其進行編譯,進行匯編然后執行代碼,或者可以通過發出IL吐出一個動態方法,但這並不是很簡單。
我建議您只使用一種眾所周知的方法來分析字符串,然后創建表達式樹 。
或者,您只能使用不贊成使用的javascript引擎來解析表達式。
既然您熟悉python,為什么不使用它呢? 在C#代碼中創建IronPyton腳本引擎對象。 這是一個片段:
string expression = lab.Text; // @"540 + 4 / 3" try to test
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString(expression, SourceCodeKind.Expression);
int result = source.Execute<int>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.