簡體   English   中英

使用string.split函數但獲得意外結果

[英]using the string.split function but getting an unexpected result

所以我試圖制作一個計算器,我不確定如何采用等式並將其分解為運算符和操作數。 我選擇通過使用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”

旁注用戶輸入數字/操作數,按鈕編號作為“操作符”輸入等式中,允許空格分解

+之前有一個空格,所以它會在那里分開,一邊是空字符串,另一邊是+

您可能會發現刪除空條目選項很有用 - 這也會導致在標記之間折疊多個空格。

StringSplitOptions.RemoveEmptyEntries 從返回的數組中省略空數組元素 ; StringSplitOptions.None在返回的數組中包含空數組元素。

equation.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries);

我還假設“ 1 + 2 ”是合法的,即一般來說任何長度的空格只與分裂令牌有關? 因此,您需要使用Split的重載,它接受StringSplitOptions https://msdn.microsoft.com/en-us/library/system.stringsplitoptions(v=vs.110).aspx並指定RemoveEmptyEntries

如果你想讓應用程序檢查它是否是一個合法的整數 ,你可以添加equationArray[0] == null || equationArray[0] == "" || equationArray[0] == " " equationArray[0] == null || equationArray[0] == "" || equationArray[0] == " " equationArray[0] == null || equationArray[0] == "" || equationArray[0] == " "到你的if語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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