2

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

Field____Field____Field
Value____Value____Value
Value____Value____Value
Value____Value____Value
Value____Value____Value

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

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

4

3 回答 3

2

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

于 2012-06-25T18:49:45.077 回答
1

你不需要任何高级的东西,你只需要用下划线替换空格:

my $str = "Field     Field     Field";
$str =~ tr/ /_/;
print $str;
于 2012-06-25T18:44:58.200 回答
0

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

my $str = "Field     Field\tContinued     Field";
$str =~ s/\s/_/g;
print $str;
于 2012-06-25T18:51:01.770 回答