【发布时间】:2011-03-24 11:23:46
【问题描述】:
我有一个需要转换为字符串的数字。首先我使用了这个:
Key = i.ToString();
但我意识到它的排序顺序很奇怪,所以我需要用零填充它。我怎么能这样做?
【问题讨论】:
标签: c# string string-formatting
我有一个需要转换为字符串的数字。首先我使用了这个:
Key = i.ToString();
但我意识到它的排序顺序很奇怪,所以我需要用零填充它。我怎么能这样做?
【问题讨论】:
标签: c# string string-formatting
相当简单:
Key = i.ToString("D2");
D 代表“十进制数”,2 代表要打印的位数。
【讨论】:
string.Format("D2", value),你会在输出中得到D2。这不起作用。在这种情况下,我们必须使用"{0:00}"。
string.Format("{0:D2}", value)。只是说 string.Format("D2", ...) 无论如何都不会替换任何内容,因为您没有占位符。
value 是 int 时才有效。例如,如果 value 是双精度数,则它必须是 string.Format("{0:00}", value)
请参阅String formatting in C# 了解 String.Format 的一些使用示例
其实formatting int的一个更好的例子
String.Format("{0:00000}", 15); // "00015"
$"{15:00000}"; // "00015"
【讨论】:
$"{15:D5}"; 将导致输出:"00015"。
int i 并且想要8 位数字,只需使用var iStr = $"{i:D8}。
如果您想保持固定宽度,例如 10 位,请这样做
Key = i.ToString("0000000000");
用任意数量的数字替换。
i = 123 将产生Key = "0000000123"。
【讨论】:
由于尚未有人提及这一点,如果您使用的是 C# 版本 6 或更高版本(即 Visual Studio 2015),那么您可以使用 string interpolation 来简化您的代码。所以不用string.Format(...),你可以这样做:
Key = $"{i:D2}";
【讨论】:
使用:
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)。
【讨论】:
对于插值字符串:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
【讨论】:
通常 String.Format("format", object) 优于 object.ToString("format")。因此,
String.Format("{0:00000}", 15);
优于,
Key = i.ToString("000000");
【讨论】:
试试:
Key = i.ToString("000000");
不过,就个人而言,我想看看您是否不能直接对整数进行排序,而不是对字符串表示。
【讨论】:
这里我希望我的 no 限制为 4 位数字,如果它是 1,它应该显示为 0001,如果它是 11,它应该显示为 0011..以下是代码。
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
我实现了这段代码来生成收据号。
【讨论】:
int num=1;
string number=num.ToString().PadLeft(4, '0')
输出="00001"
编辑:更改为匹配 PadLeft 数量
【讨论】:
我找到了一种更好的方法,一路尝试,但对我没有用
Convert.ToDecimal(LN).ToString("000000#");
LN 是 Int64
【讨论】: