2010-01-11 73 views
6

我將數字存儲在數據庫中,有些數字的第一個數字爲零,因爲它們總是需要一定數量的數字。我有一個文本框,其中輸入了這個數字,所以我做了一個Convert.ToInt32(TextBox.Text),它刪除了起始零,如果它有一個。有沒有人有任何想法,我可以保持零,或將其添加到轉換後的開始?Convert.ToInt32 - Keep Preceding Zero

+4

如果你想要一個前導零,當然你不想轉換爲Int32?爲什麼不把它作爲一個字符串? –

+0

我認爲你不能保留它們。但您可以格式化轉換的int以再次顯示它們:http://msdn.microsoft.com/en-us/library/dd260048.aspx –

+0

@Matt因爲數據庫類型是Int – Grace

回答

26

的唯一途徑保持前面的零不是將其轉換爲數字。

一個數字沒有任何前面的零,因爲它只包含值,而不包含值的字符串表示。

如果你想將其轉換爲一個數字,然後將其轉換回字符串,重現之前的零,您可以使用自定義格式:

string formatted = number.ToString("00000"); 

或爲數字的動態數:

string formatted = number.ToString(new String('0', numberOfDigits)); 
+0

+1解釋兩個選項,因爲最好的解決方案取決於數據的性質(imo) – Thorarin

+2

是不是'number.ToString().PadLeft(numberOfDigits,'0')'更容易?至少更容易閱讀我會說... :) – Svish

+2

當我這樣做填充時,我擔心負值。例如,PadLeft選項看起來像這樣:「00-9」而不是-009。 – Codesleuth

9

如果您需要保留一個填充零,然後將該值保留爲一個字符串。整數不能保存有關填充零的信息,因爲它們只是表示一個數字。

如果您需要驗證輸入的號碼,請使用Int32.TryParse或將該值與regular expression(如"^\d+$")相匹配。

編輯:除了Guffa's answer,你可以用「d」(MSDN)格式化到指定的字符數(以零填充,如果必要的話):

string formatted = number.ToString("D5"); // 13 -> 00013 
+0

+1,暗示有關Decimal(「D」)格式說明符。由於該問題指定了'Convert.ToInt32()',這是我個人首選填充值的方法。 – Codesleuth

0

您必須使用字符串格式保持前導零:

int fooValue = Convert.ToInt32(TextBox.Text) 
//operations with foo Value 
string formatValue = fooValue.ToString("#0000"); 
2

方式我會這樣做是當數字被放回到數據庫而不是餵它int使用string通過使用myint.ToString("0000000")。 0的數量是填充數字的總長度。

0

這也應該起作用。

123.ToString().PadLeft(5, '0'); // 0
+0

正如對Svish的評論所評論的那樣,這會產生帶有負整數的奇怪結果。 – Codesleuth