在Perl中打印固定列表的最佳方法(使用下划线而不是空格)

时间:2012-06-25 18:41:31

标签: perl format

我需要将数据库记录格式化为一个网络论坛可以正确显示的表格(使用bbcode)。有问题的论坛不尊重空格,无论我使用哪种格式标签,但确实有等宽字体,所以我需要用这样的下划线替换所有空格,以保持一致:

Field____Field____Field
Value____Value____Value
Value____Value____Value
Value____Value____Value
Value____Value____Value

我已经研究过Perl格式和printf,但我无法弄清楚如何使用这些方法将空格和制表符变为下划线。文本也有可变长度,所以我需要列也是可变的(不能硬编码固定值)。

任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:2)

有点黑客但是我会使用sprintf但是我会用我在这些值中找不到的另一个字符替换我的值中的空格(比如〜)。这可以通过简单的正则表达式完成。 在sprintf之后,我会将带有下划线的空格和值中的特殊字符替换回空格。

答案 1 :(得分:1)

您不需要任何高级内容,只需要用下划线替换空格:

my $str = "Field     Field     Field";
$str =~ tr/ /_/;
print $str;

答案 2 :(得分:0)

如果字段中的值可能包含标签(或其他类似空格的字符),您可能需要执行以下操作:

my $str = "Field     Field\tContinued     Field";
$str =~ s/\s/_/g;
print $str;