我怎样才能将数字格式化为前导零的string?

我有一个数字,我需要转换为一个string。 首先我用这个:

Key = i.ToString(); 

但是我意识到这是按照奇怪的顺序sorting的,所以我需要用零填充它。 我怎么能这样做?

相当简单:

 Key = i.ToString("D2"); 

D代表“十进制数”, 2代表要打印的位数。

有关String.Format的一些示例用法,请参阅C#中的string格式

其实是一个更好的格式化int的例子

 String.Format("{0:00000}", 15); // "00015" 

如果你想保持它像这样固定10位数字

 Key = i.ToString("0000000000"); 

用你喜欢的数字replace尽可能多的数字。

123 i将导致Key0000000123

由于没有人提到过,如果您使用的是C#版本6或更高版本(即Visual Studio 2015),则可以使用string插值来简化代码。 所以,而不是使用string.Format(...) ,你可以这样做:

 Key = $"{i:D2}"; 

使用:

 i.ToString("D10") 

请参阅Int32.ToString (MSDN)和标准数字格式string (MSDN)。

或者使用String.PadLeft 。 例如,

 int i = 321; Key = i.ToString().PadLeft(10, '0'); 

会导致0000000321 。 虽然String.PadLeft不适用于负数。

请参阅String.PadLeft (MSDN)。

通常String.Format(“format”,object)优于object.ToString(“format”)。 因此,

 String.Format("{0:00000}", 15); 

优于,

 Key = i.ToString("000000"); 

尝试:

 Key = i.ToString("000000"); 

就个人而言,虽然,我会看到,如果你不能直接sorting整数,而不是string表示。

在这里,我想我的不限制在4位,如果它是1它应该显示为0001,如果它11应显示为0011 ..以下是代码。

  reciptno=1;//Pass only integer. string formatted = string.Format("{0:0000}", reciptno); TxtRecNo.Text = formatted;//Output=0001.. 

我实现了这个代码来生成Money收据号。

 int num=1; string number=num.ToString().PadLeft(5, '0') 

输出= “00001”