【问题标题】:string formatting and printing字符串格式化和打印
【发布时间】:2011-06-23 13:16:36
【问题描述】:

我正在尝试对齐值。我想知道为什么会这样:

        string value = "";

        value += string.Format("{0,-10}", "value");
        value += string.Format("{0,5}", "value");

        value += Environment.NewLine;

        value += string.Format("{0,-8}", "val");
        value += string.Format("{0,7}", "value");

        Print(value);

如果我在“打印”之前检查值是正确的。结果是:

value     value
val       value

应该是这样,但是当我在打印机上打印“值”时,它们会变成这样:

   value     value
   val     value

我真的不明白为什么当我打印文本时它会改变字符串?

我尝试使用“\t”,但我的打印机似乎不理解“\t”,因为标签没有打印出来。

顺便说一句:这只是一个测试代码,因此您可以理解我在使用真实代码时遇到的问题。

【问题讨论】:

  • 您确定使用等宽字体打印?

标签: c# string printing format


【解决方案1】:

您的控制台使用打印机不使用的固定宽度字体(至少在默认情况下)。因此,空格在您的打印机上占用的空间更少,而您的字母根据它们的实际宽度占用或多或少的空间。

【讨论】:

    【解决方案2】:

    这可能是由使用不同字符宽度的字体引起的。在非固定宽度字体中,空格通常比字母和数字窄,因此看起来可能缺少空格。考虑使用Lucida Console 或其他固定宽度字体。

    【讨论】:

    • 你的意思是我应该改变我在打印机上的字体?
    • @syncis,这可能有效。这取决于您的打印方式。您使用的是 FlowDocument 之类的东西吗?如果是这样,请更改文档上的字体。
    猜你喜欢
    • 2016-06-21
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多