【问题标题】:Perl formatting (i.e.sprintf) not retained in html displayPerl 格式(即 sprintf)未保留在 html 显示中
【发布时间】:2009-10-08 05:43:46
【问题描述】:

我遇到了一些问题。最初,我有以下格式的输入:

12345     apple
12     orange

我将第一列保存为 $num,将第二列保存为 $fruit。我希望输出看起来像这样(见下文)。我希望输出对齐,就好像 $num 的长度一样。实际上,$num 将由可变长度的数字组成。

12345     apple
12        orange

按照建议,我使用以下代码:

$line = sprintf "%--10s %-20s", $num, $fruit;

此解决方案在命令行显示中效果很好,但当我尝试通过 HTML 显示此格式时,不会保留此格式。比如……

print "<html><head></head><body>
        $line
        </body></html>";

这会产生与格式化前的原始输出相同的输出。你们对我如何在基于 web 的 html 显示中保留 sprintf 格式有什么建议吗?我尝试用空格填充 $num,但以下代码似乎对我不起作用。

$num .= (" " x (10 - length($num)));

无论如何,我将不胜感激任何建议。谢谢!

【问题讨论】:

    标签: html fixed-width


    【解决方案1】:

    HTML 会忽略多余的空格。而且它可能以比例字体显示的事实意味着即使有多余的空格也不会排列。

    简单的选择是用

     标签包围文本,默认情况下显示等宽字体和保留空白。或者,您可以让您的代码生成一个 HTML 表格。
        

    【讨论】:

    • 使用
       对我有用!谢谢你弗里多。我从 SO 社区学到了很多东西。再次感谢。
    【解决方案2】:

    HTML 将所有连续的空格压缩为一个空格。如果您希望输出像表格一样排列,则必须将值实际放入 HTML 表格中。

    【讨论】:

      【解决方案3】:

      &lt;pre&gt; 中的“pre”表示 预格式化,它准确地描述了 sprintf() 语句的输出。因此,来自 Friedo 的建议,我怀疑其他人。

      【讨论】:

        猜你喜欢
        • 2013-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2022-10-08
        • 1970-01-01
        相关资源
        最近更新 更多