如何在没有带字符串的减号的情况下填充数字.格式()

本文关键字:填充 情况下 数字 格式 字符串 | 更新日期: 2023-09-27 18:34:30

我正在覆盖矩阵类的ToString()方法,因此我可以将监视窗口中的内容复制到文本编辑器中以执行进一步的分析。

这个想法是ToString()应该返回如下内容:

[M11:-1.00 M12: 0.00 M13: 0.00 M14: 0.00]
[M21: 0.00 M22: 0.00 M23:-1.00 M24: 0.00]
[M31: 0.00 M32:-1.00 M33: 0.00 M34: 0.00]
[M41: 0.00 M42: 0.00 M43: 0.00 M44: 1.00]

请注意,正数如何具有额外的填充空间来补偿负号在负数上占用的空间。

目前,我正在这样做:

    public override string ToString()
    {
        return string.Format("[M11:{0:0.00} M12:{1:0.00} M13:{2:0.00} M14:{3:0.00}]'n[M21:{4:0.00} M22:{5:0.00} M23:{6:0.00} M24:{7:0.00}]'n[M31:{8:0.00} M32:{9:0.00} M33:{10:0.00} M34:{11:0.00}]'n[M41:{12:0.00} M42:{13:0.00} M43:{14:0.00} M44:{15:0.00}]",
            M11, M12, M13, M14, M21, M22, M23, M24, M31, M32, M33, M34, M41, M42, M43, M44);
    }

这将输出以下内容:

[M11:-1.00 M12:0.00 M13:0.00 M14:0.00]
[M21:0.00 M22:0.00 M23:-1.00 M24:0.00]
[M31:0.00 M32:-1.00 M33:0.00 M34:0.00]
[M41:0.00 M42:0.00 M43:0.00 M44:1.00]

我想为正数添加填充空格,以便它们都很好地排列,从而使我的调试任务更容易。

不幸的是,登录string.Format()似乎没有占位符。

我想我可以在每个元素上使用.ToString(),使用Pad()然后将它们全部组装起来,但我仍然认为可能有一种方法可以实现这一点,而不必手动组装数字并同时创建大量垃圾。

是否可以在ToString()内执行此操作? 或者我需要手动填充每个数字,以便句点对齐良好。

如何在没有带字符串的减号的情况下填充数字.格式()

您可以使用类似于以下内容的格式:

    [M11:{0: 0.00;-0.00} M12:{0: 0.00;-0.00}...

查看您链接的 MSDN 文章中标题为 The ";" Section Separator 的部分。

相关文章: