Convert.ToInt32 - 保持前置零

时间:2010-01-11 09:41:19

标签: c#

我将数字存储在数据库中,有些数字的第一个数字为零,因为它们总是需要一定数量的数字。我有一个文本框,其中输入了这个数字,所以我做了一个Convert.ToInt32(TextBox.Text),它删除了起始零(如果有的话)。有没有人有任何想法如何保持零,或在转换后将它添加到开始?

5 个答案:

答案 0 :(得分:26)

保持前面的零的唯一方法是不将其转换为数字。

数字没有任何前面的零,因为它只包含值,而不是值的字符串表示形式。

如果要将其转换为数字,然后将其转换回字符串,重新创建前面的零,则可以使用自定义格式:

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

或者是动态的数字位数:

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

答案 1 :(得分:10)

如果需要保留填充零,则将值保留为字符串。整数不能保留有关填充零的信息,因为它们只是代表一个数字。

如果您需要验证输入的数字,请使用Int32.TryParse或将值与regular expression匹配(如"^\d+$")。

修改:除Guffa's answer外,您还可以使用“D”(MSDN)格式化为指定数量的字符(必要时填充为零) :

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

答案 2 :(得分:2)

我这样做的方法是将号码放回数据库而不是通过使用int string使用myint.ToString("0000000")。 0的数字是填充数字的总长度。

答案 3 :(得分:1)

这也应该有用。

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

答案 4 :(得分:0)

您必须使用字符串格式保留前导零:

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