2

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

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)));

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

4

3 回答 3

11

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

简单的选项是只用 <pre> 标签包围文本,默认情况下将显示等宽字体和保留空白。或者,您可以让您的代码生成一个 HTML 表格。

于 2009-10-08T05:45:48.313 回答
4

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

于 2009-10-08T05:46:26.877 回答
3

'pre'<pre>表示preformatted,它准确地描述了sprintf()语句的输出。因此,来自 Friedo 的建议,我怀疑其他人。

于 2009-10-08T05:49:09.563 回答