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

C# 如何将数字格式化为带前导零的字符串?,c#,string,string-formatting,C#,String,String Formatting,我有一个数字需要转换成字符串。首先我用了这个: Key = i.ToString(); 但我意识到它的排序顺序很奇怪,所以我需要用零填充它。我怎样才能做到这一点?试试: Key = i.ToString("000000"); 不过,就个人而言,我想看看你是否不能直接按整数排序,而不是按字符串表示。如果你想保持它的固定宽度,例如10位,就这样做 Key = i.ToString("0000000000"); 替换为任意数量的数字 i=123将导致Key=“0000000 123”有关Stri

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

Key = i.ToString();
但我意识到它的排序顺序很奇怪,所以我需要用零填充它。我怎样才能做到这一点?

试试:

Key = i.ToString("000000");

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

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

Key = i.ToString("0000000000");
替换为任意数量的数字

i=123
将导致
Key=“0000000 123”

有关String.Format的一些示例用法,请参见

实际上,这是一个更好的例子

或使用:

使用:

请参阅(MSDN)和(MSDN)

或者使用
String.PadLeft
。比如说,

int i = 321;
Key = i.ToString().PadLeft(10, '0');
将导致
0000000321
。虽然
String.PadLeft
不适用于负数

参见(MSDN)。

相当简单:

Key = i.ToString("D2");
D
代表“十进制数”;
2
代表要打印的位数。

通常是字符串。格式(“格式”,对象)优于对象。ToString(“格式”)。所以,

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

Key = i.ToString("000000");

由于还没有人提到这一点,如果您使用的是C#version 6或更高版本(即Visual Studio 2015),那么您可以使用来简化代码。因此,您不必使用
string.Format(…)
,只需执行以下操作:

Key = $"{i:D2}";
输出=“00001”


编辑:更改为匹配PadLeft金额

此处我希望我的编号限制为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

如果你想用负数,我想这会让你很不舒服。谢谢-我用了第二个。我遗漏了“.ToString()”-它仍然有效。如果使用
string.Format(“D2”,value)
则输出中会出现
D2
,则可能重复。这不管用。在这种情况下,我们必须使用
“{0:00}”
。您应该使用
string.Format(“{0:D2}”,value)
。仅仅说
string.Format(“D2”,…)
不会替换任何东西,因为你没有占位符。@infinitypanda意识到这只会在
value
是int时起作用。例如,如果
value
是双精度的,它必须是
string.Format(“{0:00}”,value)
如果我们谈论的是“前导数字”,我想答案应该是I.ToString(“00”);其中“00”表示前导零。。您可以尽可能多地增加此金额。是的,正如@cja所问的,为什么更可取?我不是反对这个断言,我想知道为什么。第一种语法“感觉”更精确、更可预测、更清晰。最好用Key=String.Format(“{0:00000}”,15)表示;与Key=i.ToString(“000000”);对于第一个语法,我非常确定我确切地知道我将得到的结果,如果我碰巧少了一个字符,我确切地知道要更改什么(格式字符串。因此,简而言之,对于我来说,情绪化的个人偏好更可取,几乎有一个似是而非的一半原因支持;-)那么就决定了吗?请注意string.format({0:00000}),“15”);返回“15”,即它对字符串不起作用。甚至更短的方式:
$“{15:D5}”
将导致输出:
“00015”
int num=1;
string number=num.ToString().PadLeft(4, '0')
        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#");