在C#中,如何在不延长负值的情况下使用零填充格式化整数?

c#

我在 C# .Net 5.0,Visual Studio 中工作。我正在格式化整数以像这样填充零

$"{-1:d04}"
$"{1:d04}"

格式化正数和负数给出不同长度的结果字符串

-0001
0001

我需要我的数字长度相同(即本例中的结果应该是字符串"-001""0001"),是否存在任何格式模式来实现这一点?

回答

一种方法是使用说明;符为非负数和负数提供两种格式。

int x = 1;
Console.WriteLine($"{x:0000;-000}"); // "0001"
x = -1;
Console.WriteLine($"{x:0000;-000}"); // "-001"

0000对于正数,-000对于负数。

这确实意味着您不再使用标准格式说明符D,它会自动使用NegativeSign来自当前的NumberFormatInfo. 您必须对负号进行硬编码。这可能是也可能不是问题,具体取决于您在做什么。

编辑:

显然这是用于对字符串进行排序。如果格式不必完全是“0001”和“-001”,只要长度相同,那么我建议:

int x = 1;
Console.WriteLine($"{x,5:d04}"); // " 0001" (note the leading space)
x = -1;
Console.WriteLine($"{x,5:d04}"); // "-0001"


以上是在C#中,如何在不延长负值的情况下使用零填充格式化整数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>