如何计算以字符串形式给出的算术表达式
本文关键字:表达式 字符串 何计算 计算 | 更新日期: 2023-09-27 18:32:53
我做了一个GUI计算器。因此,当有人按下按钮时,数字和符号将显示在标签中,然后当他们按回车键时,计算机会捕获字符串,这就是我需要帮助的地方。我知道在 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# 中,您没有 eval。原则上,您可以在运行时生成代码,编译代码,进行程序集,然后执行代码,或者可以通过发出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>();