簡體   English   中英

如何計算以字符串形式給出的算術表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM