通常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
答案 0 :(得分:0)
不幸的是,用于填充的空格是硬编码的。
https://source.dot.net/#System.Private.CoreLib/shared/System/Text/StringBuilder.cs,1766
您可以使用x.ToString("F1").PadLeft(8, '\u2007')