在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"