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#");