C#数字格式:前导加号和空格
Posted
技术标签:
【中文标题】C#数字格式:前导加号和空格【英文标题】:C# number format: leading plus sign AND spaces 【发布时间】:2018-05-02 06:05:15 【问题描述】:我想做的是在财务报告中显示这样的数字:
+ 5000
+ 176
- 10000
- 620230
所以我需要打印出 6 位长的数字,并带有前导符号。
我尝试将前导符号与前导空格结合起来,如下所示:String.Format("0,7:+#;-#;+0", value);
,但事实证明它给了我:
+5000
+176
-10000
-620230
有没有办法使用 String.Format 来获得我想要的输出?
编辑:我知道我可以制作自己的格式函数来实现该结果,并且我确实使用了一个。出于好奇,我向String.Format
询问是否可以完成。
【问题讨论】:
我强烈怀疑没有。我可能只是编写一个方法来格式化它,方法是提取符号,然后用适当的填充分别格式化绝对值。与尝试大量字符串格式相比,这可能会花费更少的时间来编写。 【参考方案1】:您需要一些技巧来组合各个部分(符号和数字)。这是如何完成的:
string.Format("0:+;-;+0,7:#;#;0",someNumber);
0,7:#;#;0
将格式化数字,以便仅显示绝对值。而第一部分0:+;-;+
只会根据值显示符号。为方便起见,您可以创建自己的方法来包装该行代码。
【讨论】:
如果有人说他们“知道 C++”,你会希望他们看到这个格式字符串并知道它的作用吗?如果有人“熟悉 C++”并看到了这个格式字符串,你认为他们可以遵循的最有效的路径是什么?【参考方案2】:这是一个返回格式化字符串的方法。这很不言自明。
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
【讨论】:
优雅方案+1 谢谢,这也是我正在使用的功能。我只是出于对 String.Format 的好奇而问这个问题。也许我应该在问题中说明这一点。 @AVAVT King King 的回答使用string.Format
。但对我来说,可读性更重要。以上是关于C#数字格式:前导加号和空格的主要内容,如果未能解决你的问题,请参考以下文章