【问题标题】:String.PadRight seems to be not working (Unequal columns)String.PadRight 似乎不起作用(不相等的列)
【发布时间】:2016-10-01 11:58:19
【问题描述】:

我正在尝试打印收据。我使用这种方法在标题和价格之间放置一个空格:

  private string getStringForList(string menu, string price, string title)
    {
        if (price != null)
        {
            decimal Prices = Convert.ToDecimal(price);
            menu = menu.PadRight(33,' ');
            return menu + Prices.ToString("c2");
        }
        else
        {
            return menu.PadRight(46) + title;
        }
    }

但它似乎并不像那样工作。结果我得到了这个:

如何将这些价格打印成一行?

【问题讨论】:

  • 无论菜单项有多大,您总是添加相同的填充,因此它总是会显得格格不入。
  • 只是一个想法,您是否尝试过这样的方法来确保 PadRight 正常工作? return menu + "test"; 只是好奇我们是否可能从 decimal.tostring 转换中得到一些未知的空格。
  • 我也试过 totalWidth - menu.Length
  • 我试过了 Test 。但它是一样的。我什至测试了菜单标题,但也没有未知字符。
  • Arial 是一种可变宽度字体,因此不对齐计数空间。如果你想使用这种技术,那么你应该选择monospaced font

标签: c# string printing


【解决方案1】:

我检查了,内边距加起来是 33。所以问题一定是字体的空格必须比其他文本更窄。也许您可以尝试使用制表符跳转 ('\t') 或对所有字符(包括空格)具有相同宽度的字体。

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2022-12-11
    • 2016-11-29
    • 2016-02-01
    • 2020-09-23
    • 2010-12-05
    相关资源
    最近更新 更多