如何将数字格式化为带前导零的字符串?

问题描述:

我有一个数字,我需要转换为一个字符串。首先我使用这个:如何将数字格式化为带前导零的字符串?

Key = i.ToString(); 

但我意识到它正在排序奇怪的顺序,所以我需要填充零。我怎么能这样做?

+4

[C#将int转换为带填充零的字符串的可能的副本](http://*.com/questions/4325267/c-sharp-convert-int-to-string-with-padding-zeros) – nawfal 2015-06-04 07:46:21

相当简单:

Key = i.ToString("D2"); 

D代表 “十进制数”,2用于数字打印的数量。

+4

如果你使用'string.Format(“D2”,value)''你会在输出中得到'D2'。这不起作用。在这种情况下,我们必须使用“{0:00}”。 – 2015-08-07 07:22:18

+27

您应该使用'string.Format(“{0:D2}”,value)'来代替。只是说'string.Format(“D2”,...)'不会取代任何东西,不管什么,因为你没有占位符。 – infinitypanda 2015-09-11 19:25:30

+2

@infinitypanda意识到这只会在'value'是一个整数时才起作用。例如,如果'value'是一个double,那么它必须是'string.Format(“{0:00}”,value)' – derekantrican 2017-02-23 15:02:00

尝试:

Key = i.ToString("000000"); 

就个人而言,虽然,我会看,如果你不能在整数排序直接,而不是字符串表示。

如果你想保持固定的宽度,例如10位数字,像这样做

Key = i.ToString("0000000000"); 

与尽可能多的数字代替,只要你喜欢。

i = 123然后将导致Key = "0000000123"

String formatting in C#对于一些示例的String.Format

的使用

其实formatting int

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

使用一个更好的例子:

i.ToString("D10") 

Int32.ToString(MSDN)和Standard Numeric Format Strings(MSDN )。

或使用String.PadLeft。例如,

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

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

请参阅String.PadLeft(MSDN)。

+2

如果你试图将它与负数结合使用,那么你会猜测这会对你产生影响。 – Mario 2011-03-24 11:32:38

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

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

最好,

Key = i.ToString("000000"); 
+2

你应该说为什么 – cja 2014-12-18 16:56:51

+3

是的,因为@cja问了,为什么它更可取?我不反对这个说法,我想知道为什么。 – 2015-08-14 14:16:07

由于还没有人提到这一点,如果你使用的是C#版本6或以上(即Visual Studio的2015年),那么你可以使用string interpolation来简化你码。因此,而不是使用string.Format(...),你可以这样做:

Key = $"{i:D2}"; 
+0

不错的一个!!!!!!! – KyloRen 2017-09-27 01:33:32

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

输出=“00001”

在这里,我想我没有在4位数的限制一样,如果它是1,应该显示为0001,如果它11应该显示为0011..BOLOW是代码。

 reciptno=1;//Pass only integer. 

     string formatted = string.Format("{0:0000}", reciptno); 

     TxtRecNo.Text = formatted;//Output=0001.. 

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