2012-02-21 40 views
15

如何解析空字符串? int.Parse(Textbox1.text)給我一個錯誤:int.Parse,輸入字符串格式不正確

Input string was not in a correct format.
System.FormatException: Input string was not in a correct format.

如果文本爲空(Textbox1.text = ''),它拋出這個錯誤。我明白這個錯誤,但不知道如何解決這個問題。

+0

你止跌在嘗試解析它之前,檢查字符串是否爲空。如果(!string.IsNullOrEmpty(Textbox1.Text))。顯然這將仍然給你一個錯誤,如果字符串不是一個數字,所以添加一些驗證輸入 – SCB 2012-02-21 04:35:41

回答

25

如果你正在尋找違約在空文本框中爲0(並在格式不正確的輸入上拋出異常):

int i = string.IsNullOrEmpty(Textbox1.Text) ? 0 : int.Parse(Textbox1.Text); 

如果你正在尋找默認爲0任何格式不正確輸入:

int i; 
if (!int.TryParse(Textbox1.Text, out i)) i = 0; 
+1

第二個代碼片段表明,TryParse會在返回false時保持原來的值不變,但它會將其替換爲零。更好地寫'int i; if(!int.TryParse(Textbox1.Text,out i))i = 0;'或者某人認爲以下內容會起作用:int i = -1; int.TryParse(Textbox1.Text,out i);' – Firo 2015-01-26 07:33:36

+0

@Firo - Google point。更新! – userx 2015-01-29 15:51:39

+0

'out i' - 如果未解析,它將被分配給'0',所以對於零檢查和分配是額外的。 – Qwertiy 2016-05-15 15:09:38

7
if(!String.IsNullOrEmpty(Textbox1.text)) 
    var number = int.Parse(Textbox1.text); 

甚至更​​好:

int number; 

int.TryParse(Textbox1.Text, out number); 
14

嗯,你想要什麼的結果是?如果你只是想驗證輸入,使用int.TryParse代替:

int result; 

if (int.TryParse(Textbox1.Text, out result)) { 
    // Valid input, do something with it. 
} else { 
    // Not a number, do something else with it. 
} 
4

試試這個:

int number; 
if (int.TryParse(TextBox1.Text, out number)) 
{ 
    //Some action if input string is correct 
} 
-1

你可以用簡單的try/catch包起來......

+0

可怕的方式來實現這一點。始終驗證輸入 - 不要計劃例外。 – Ryan 2012-02-21 04:37:05

+0

這是一個有效的選擇,但你應該清楚,你只想趕catch(System.FormatException)' – 2012-02-21 04:37:36

+0

它的一個骯髒和快速的解決方案... – SolidSnake 2012-02-21 04:43:44