C# 数字格式:前导加号和空格

C# number format: leading plus sign AND spaces

我想要做的是在财务报告中显示数字,如下所示:

+   5000
+    176
-  10000
- 620230

所以我需要打印出 6 位数字,带前导符号。

我尝试像这样将前导符号与前导空格结合起来:String.Format("{0,7:+#;-#;+0}", value);,但结果是:

   +5000
    +176
  -10000
 -620230

有没有办法用String.Format得到我想要的输出?

编辑:我知道我可以制作自己的格式函数来实现该结果,我确实使用了一个。出于好奇,我问 String.Format 看看是否可以完成。

这是一个returns格式化字符串的方法。这是不言自明的。

static string FormatFinancialNumber(int number) {
    string sign = number < 0 ? "-" : "+"; // decide the sign
    return sign + Math.Abs(number).ToString().PadLeft(7); // Make the number part 7 characters long
}

用法:

Console.WriteLine(FormatFinancialNumber(1));
Console.WriteLine(FormatFinancialNumber(-12));
Console.WriteLine(FormatFinancialNumber(123));
Console.WriteLine(FormatFinancialNumber(-1234));
Console.WriteLine(FormatFinancialNumber(12345));

输出:

+      1
-     12
+    123
-   1234
+  12345

您需要一些技巧来组合各个部分(符号和数字)。这是如何完成的:

string.Format("{0:+;-;+}{0,7:#;#;0}",someNumber);

{0,7:#;#;0} 将格式化数字,以便只显示绝对值。而第一部分 {0:+;-;+} 只会根据值显示符号。为了方便起见,您可以创建自己的方法来包装该行代码。