C# 正在使用string.split函数,但得到意外结果

C# 正在使用string.split函数,但得到意外结果,c#,string,C#,String,所以我试图做一个计算器,我不知道如何把方程分解成运算符和操作数。我选择使用string.split函数将其转换为一个数字和运算符数组,然后与之比较并输出结果。但是,如果用户输入“+100”,我想抛出并出错,因为它希望先输入一个操作数。这是我检查上述情况的代码 String equation = txt_equation.Text; String[] equationArray= new String [30]; equationArray = equation.Split(' '); if (

所以我试图做一个计算器,我不知道如何把方程分解成运算符和操作数。我选择使用string.split函数将其转换为一个数字和运算符数组,然后与之比较并输出结果。但是,如果用户输入“+100”,我想抛出并出错,因为它希望先输入一个操作数。这是我检查上述情况的代码

String equation = txt_equation.Text;
String[] equationArray= new String [30];
equationArray = equation.Split(' ');

if (equationArray[0] == "+" || equationArray[0] == "-" || equationArray[0] == "/" || equationArray[0] == "*")
{
   System.Windows.Forms.MessageBox.Show("The equation entered is incorrect");
}
else
{...}
问题是,当我输入“100+100”时,它会被拆分为:

equationArray[0]=“100”
equationArray[1]=“+”
equationArray[2]=“100”

但如果我输入“+100”,结果是:

equationArray[0]=“”
equationArray[1]=“+”
equationArray[2]=“100”


旁注:用户使用按钮输入数字/操作数数字作为“运算符”输入等式中的“n”操作数,允许空格将其拆分

我还假设“
1+2
”是合法的,即通常任何长度的空白仅与分割标记相关?因此,您需要使用
Split
重载,该重载采用
StringSplitOptions
并指定
removemptyEntries

,我还假设“
1+2
”是合法的,即一般来说,任何长度的空白都只与分割标记相关?因此,您需要使用一个重载
Split
,该重载接受
StringSplitOptions
,并指定
removemptyentries

+
之前有一个空格,因此它将在那里拆分,一边是空字符串,另一边是
+

您可能会发现这样做很有用——这也会导致在令牌之间折叠多个空格

StringSplitOptions.RemoveEmptyEntries
忽略返回数组中的空数组元素;或
StringSplitOptions.None
在返回的数组中包含空数组元素


+
前面有一个空格,因此它将在那里拆分,一边是一个空字符串,另一边是
+

您可能会发现这样做很有用——这也会导致在令牌之间折叠多个空格

StringSplitOptions.RemoveEmptyEntries
忽略返回数组中的空数组元素;或
StringSplitOptions.None
在返回的数组中包含空数组元素


如果您想让应用程序检查它是否是一个合法的整数,您可以将
equationArray[0]==null | | | equationArray[0]==“| | | equationArray[0]==”
添加到您的if语句中。

如果您想让应用程序检查它是否是一个合法的整数,您可以只添加
equationArray[0]==null | | equationArray[0]==“”| | equalationArray[0]==“”
到您的if语句。

String.Split(新字符[]{'},StringSplitOptions.RemoveEmptyEntries)“+100”包含一个初始空间,该空间在目标数组中生成一个空元素。顺便说一句,您不需要初始化目标数组,这是有效的,谢谢:)详细信息(查看第二个最佳答案)String.Split(new char[]{''},StringSplitOptions.RemoveEmptyEntries)“+100”包含在目标数组中生成空元素的初始空间。顺便说一句,您不需要初始化目标阵列即可工作,谢谢:)更多信息请访问(查看第二个最佳答案)
equation.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries);