假设除了标点符号外,两行文本逐字对应。如何使它们垂直对齐?
例如:
$line1 = "其实我是英国人"; $line2 = "Je suis anglais , en fait";
我希望输出是这样的:
我其实是英国人 Je suis anglais, 既成事实。
根据我从之前在 SO 上发布的问题的答案和 Learning Perl 的“使用 printf 格式化输出”部分中学到的知识,我提出了以下代码。
use strict;
use warnings;
my $line1 = "I am English in fact";
my $line2 = "Je suis anglais , en fait.";
my @array1 = split " ", $line1;
my @array2= split " ", $line2;
printf "%-9s" x @array1, @array1;
print "\n";
printf "%-9s" x @array2, @array2;
print "\n";
这并不令人满意。输出是这样的:
我其实是英国人 Je suis anglais , 既成事实。
有人可以给我一些提示和建议来解决这个问题吗?
谢谢 :)
更新
@ysth 让我走上了正确的道路!再次感谢:) 因为我知道我自己的日期是什么样的,对于这个示例,我所要做的就是添加以下代码行:
for ( my $i = 0; $i < @Array1 && $i < @Array2; ++$i ) {
if ( $Array2[$i] =~ /,/ ) {
splice( @Array1, $i, 0, '');
}
}
学习 Perl 简要提到了 splice 函数可以用来删除或添加数组中间的项目。现在谢谢,我再次扩大了我的 Perl 知识储备:)