如何使用String.Format()在C#中正确对齐字符串?

时间:2015-05-10 18:31:21

标签: c# string visual-studio-2010 format

伙计们,抱歉这个无聊的问题充斥着这个网站,但即使在阅读了关于C#的文档并查看他们的示例之后,我也似乎无法找到解释。

即,我有一个这样的代码:

        String s = "Hello";
        String n = "World";
        String s1 = "LALALALALALALA";
        String n1 = "heyy";
        String s2 = "sffsdfsfdsfsd";
        String n2 = "dsfsdfdsfdsfsdsd";

        String z = String.Format("{0,-20}{1,-10}", s, n);
        String z1 = String.Format("{0,-20}{1,-10}", s1, n1);
        String z2 = String.Format("{0,-20}{1,-10}", s2, n2);

(此代码仅用于测试)

现在,当我使用:

        Console.WriteLine(z);
        Console.WriteLine(z1);
        Console.WriteLine(z2);

将输出写入控制台,它按照我的预期工作;为字符串参数{0}分配了20个空格,并将下一个空格分配给字符串参数{1}。但是,当我在表单中运行完全相同的代码时(作为MessageBox输出,甚至是TextBox文本,我得到了混乱的结果。参数{0}没问题,但是参数{1}从距离结尾看似随机的距离开始{0}。

有没有理由发生这种情况?我该如何解决?

感谢您的回答!

1 个答案:

答案 0 :(得分:6)

这取决于字体。某些字体的宽度不同于所有字母。如果您尝试使用Consolas,它将正常工作。