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

时间:2011-03-24 11:23:47

标签: c# string string-formatting

我有一个我需要转换为字符串的数字。首先我使用了这个:

Key = i.ToString();

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

10 个答案:

答案 0 :(得分:305)

相当简单:

Key = i.ToString("D2");

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

答案 1 :(得分:178)

有关String.Format

的一些示例用法,请参阅String formatting in C#

实际上是formatting int

的更好示例
String.Format("{0:00000}", 15);          // "00015"

或使用String Interpolation

$"{15:00000}";                           // "00015"

答案 2 :(得分:64)

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

Key = i.ToString("0000000000");

替换为任意数量的数字。

i = 123将导致Key = "0000000123"

答案 3 :(得分:29)

使用:

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)。

答案 4 :(得分:15)

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

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

优于

Key = i.ToString("000000");

答案 5 :(得分:13)

尝试:

Key = i.ToString("000000");

但就个人而言,我会看到你是否不能直接对整数进行排序,而不是字符串表示。

答案 6 :(得分:3)

这里我希望我的no限制在4位数,如果它是1它应该显示为0001,如果它11它应该显示为0011.Below是代码。

        reciptno=1;//Pass only integer.

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

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

我实施此代码以生成货币收据号。

答案 7 :(得分:1)

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

输出=" 00001"

编辑:更改为匹配PadLeft金额

答案 8 :(得分:0)

对于内插字符串:

\x0B

答案 9 :(得分:0)

我找到了一种更好的方法,一直尝试但对我不起作用

Convert.ToDecimal(LN).ToString("000000#");

LN 是 Int64