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

我有一个数字,我需要转换成一个字符串。首先我用了这个:

Key = i.ToString();

但我意识到它的排序顺序很奇怪所以我需要用0填充它。我怎么能这样做呢?

388389 次浏览

试一试:

Key = i.ToString("000000");

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

如果你喜欢固定宽度,比如10个数字,可以这样做

Key = i.ToString("0000000000");

用你喜欢的数字替换。

i = 123将导致Key = "0000000123"

有关String的一些使用示例,请参阅c#中的字符串格式。格式

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

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

或使用字符串插值:

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

使用:

i.ToString("D10")

参见Int32。ToString (MSDN)和标准数字格式字符串 (MSDN)。

或者使用String.PadLeft。例如,

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

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

参见字符串。PadLeft (MSDN)。

非常简单:

Key = i.ToString("D2");

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

通常的字符串。Format(" Format ", object)优于object. tostring (" Format ")。因此,

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

更可取于,

Key = i.ToString("000000");

由于还没有人提到这一点,如果你使用的是c#版本6或更高版本(即Visual Studio 2015),那么你可以使用字符串插值来简化代码。因此,你可以这样做,而不是使用string.Format(...):

Key = $"{i:D2}";
int num=1;
string number=num.ToString().PadLeft(4, '0')

输出= " 00001 "

编辑:更改为匹配PadLeft的数量

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

        reciptno=1;//Pass only integer.


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


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

我实现了这段代码来生成货币收据编号。

对于插值字符串:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"

我找到了一个更好的办法,我一直在尝试,但对我不起作用

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

LN是Int64