使用“数字空间” \ u2007格式化数字吗?

时间:2019-02-15 13:15:15

标签: c# unicode string-formatting

通常string.Format()在格式化数字时使用空格字符(\ u0020)作为前导空格。由于空格字符小于数字,因此字符串的图形表示宽度随空格数而变化。

有没有办法告诉string.Format()使用“数字空间”(\ u2007)而不是“空格”(\ u0020),以便字符串的宽度与空格数无关?

我不喜欢在每个字符串后面附加.Replace('','\ u2007')。Format()。

示例(与html效果相同):
普通空格:string.Format("{0,8:F1}\r{1,8:F1}", x, y)
12345.6
7.8
图形空间:string.Format("{0,8:F1}\r{1,8:F1}", x, y).Replace(' ', '\u2007')
12345.6
7.8

1 个答案:

答案 0 :(得分:0)

不幸的是,用于填充的空格是硬编码的。

https://source.dot.net/#System.Private.CoreLib/shared/System/Text/StringBuilder.cs,1766

您可以使用x.ToString("F1").PadLeft(8, '\u2007')

之类的东西