如何将数字格式化为带前导零的字符串?
相当简单:
Key = i.ToString("D2");
D
代表 “十进制数”,2
用于数字打印的数量。
如果你使用'string.Format(“D2”,value)''你会在输出中得到'D2'。这不起作用。在这种情况下,我们必须使用“{0:00}”。 – 2015-08-07 07:22:18
您应该使用'string.Format(“{0:D2}”,value)'来代替。只是说'string.Format(“D2”,...)'不会取代任何东西,不管什么,因为你没有占位符。 – infinitypanda 2015-09-11 19:25:30
@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"
。
使用一个更好的例子:
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)。
如果你试图将它与负数结合使用,那么你会猜测这会对你产生影响。 – Mario 2011-03-24 11:32:38
通常String.Format(“format”,object)优于object.ToString(“format”)。因此,
String.Format("{0:00000}", 15);
最好,
Key = i.ToString("000000");
你应该说为什么 – cja 2014-12-18 16:56:51
是的,因为@cja问了,为什么它更可取?我不反对这个说法,我想知道为什么。 – 2015-08-14 14:16:07
由于还没有人提到这一点,如果你使用的是C#版本6或以上(即Visual Studio的2015年),那么你可以使用string interpolation来简化你码。因此,而不是使用string.Format(...)
,你可以这样做:
Key = $"{i:D2}";
不错的一个!!!!!!! – 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收据号。
[C#将int转换为带填充零的字符串的可能的副本](http://stackoverflow.com/questions/4325267/c-sharp-convert-int-to-string-with-padding-zeros) – nawfal 2015-06-04 07:46:21