我遇到了一些问题。最初,我有以下格式的输入:
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>";
这会在格式化之前产生与原始相同的输出。你们有一个关于如何在html基于网络的显示中保留sprintf格式的建议吗?我尝试使用空格填充$ num,但以下代码似乎对我不起作用。
$num .= (" " x (10 - length($num)));
无论如何,我会很感激任何建议。谢谢!
答案 0 :(得分:11)
HTML忽略额外的空格。事实上它可能显示比例字体意味着即使有额外的空格也不会排队。
简单的选择是用&lt; pre&gt;围绕文本。标签,默认情况下将显示为等宽字体并保留空格。或者,您可以让代码生成HTML表格。
答案 1 :(得分:4)
HTML将所有连续空格压缩到一个空格。如果您希望输出像表格一样排列,则必须将值实际放在HTML表格中。
答案 2 :(得分:3)
<pre>
中的'pre'表示预格式化,它准确描述了sprintf()
语句的输出。因此,我和其他人怀疑弗里多的建议。