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

Dic*_*ker 0 c# string format visual-studio-2010

伙计们,抱歉这个无聊的问题充斥着这个网站,但即使在阅读了关于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);
Run Code Online (Sandbox Code Playgroud)

(此代码仅用于测试)

现在,当我使用:

        Console.WriteLine(z);
        Console.WriteLine(z1);
        Console.WriteLine(z2);
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的回答!

Pao*_*sta 6

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