目前,我有一个输入文本框和输出标签。现在,我正在研究算术运算符。我想处理数字而不管它们的运算符。(例如,加法,减法,乘法和除法)。示例:如果我在文本框中键入2 * 3,答案将显示在标签中。
我使用包含,正则表达式和拆分;但是,它不起作用。它给出了一个错误
FormatException未处理,输入字符串格式不正确。
这是我的代码:
namespace Windows
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int num = Convert.ToInt32(textBox1.Text);//error here
string s = textBox1.Text;
string seps = @"(\t)|(\n)|(\+)|(-)|(\*)|(/)|(\()|(\))";
string[] tokens = System.Text.RegularExpressions.Regex.Split(s, seps);
foreach (string token in tokens)
label.Text = token;
if (textBox1.Text.Contains("*")==true)
{
int num2 = num * num;
label.Text = Convert.ToString(num2);
}
}
public void CalcLexer(String str)
{
// Regex.Split(str, @"(?=[-+*/])|(?<=[-+*/])");
}
}
}
有人可以帮我解决这个问题吗?非常感谢你的推荐。
答案 0 :(得分:0)
您正在尝试使用仍在其中的运算符转换字符串:
int num = Convert.ToInt32(textBox1.Text);//error here
此时你仍然有公式(2 * 3),而不是单个数字(2)。您需要在分割字符串后转换数字并确认“令牌”是数字而不是运算符。
请注意,如果给定的文本不是数字,则Convert.ToInt32旨在引发异常。如果您希望它容忍运算符而不抛出异常,则可以使用Int32.TryParse。