String 非常弦分裂
我有一根绳子String 非常弦分裂,string,algorithm,perl,String,Algorithm,Perl,我有一根绳子 my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; '; 我需要输出如下所示 one ; two - three; four - five ; eight ; nine-ten ; ; ; six - seven ; ; eleven - t
my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; ';
我需要输出如下所示
one ; two - three; four - five ; eight ; nine-ten ;
; ; six - seven ; ; eleven - twelve ;
; ; ; ; thirteen - fourteen ;
按“;”拆分字段,并用“|”)分开)
请帮帮我这可以实现你的目标:
#!/usr/bin/perl
use warnings;
use strict;
use List::Util qw(max);
my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; ';
my @fields = map { [ split /\s*\|\s*/ ] } split /\s*;\s*/, $str;
my $max_row = max map { scalar(@$_) } @fields;
foreach my $row (0 .. $max_row-1) {
foreach my $col (@fields) {
my $width = max map { length ($_) } @$col;
printf " %-*s ;", $width, $col->[$row] ? $col->[$row] : " ";
}
print "\n";
}
这可以实现您的目标:
#!/usr/bin/perl
use warnings;
use strict;
use List::Util qw(max);
my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; ';
my @fields = map { [ split /\s*\|\s*/ ] } split /\s*;\s*/, $str;
my $max_row = max map { scalar(@$_) } @fields;
foreach my $row (0 .. $max_row-1) {
foreach my $col (@fields) {
my $width = max map { length ($_) } @$col;
printf " %-*s ;", $width, $col->[$row] ? $col->[$row] : " ";
}
print "\n";
}
这可以实现您的目标:
#!/usr/bin/perl
use warnings;
use strict;
use List::Util qw(max);
my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; ';
my @fields = map { [ split /\s*\|\s*/ ] } split /\s*;\s*/, $str;
my $max_row = max map { scalar(@$_) } @fields;
foreach my $row (0 .. $max_row-1) {
foreach my $col (@fields) {
my $width = max map { length ($_) } @$col;
printf " %-*s ;", $width, $col->[$row] ? $col->[$row] : " ";
}
print "\n";
}
这可以实现您的目标:
#!/usr/bin/perl
use warnings;
use strict;
use List::Util qw(max);
my $str = 'one ; two - three; four - five | six - seven; eight ; nine-ten | eleven - twelve | thirteen - fourteen; ';
my @fields = map { [ split /\s*\|\s*/ ] } split /\s*;\s*/, $str;
my $max_row = max map { scalar(@$_) } @fields;
foreach my $row (0 .. $max_row-1) {
foreach my $col (@fields) {
my $width = max map { length ($_) } @$col;
printf " %-*s ;", $width, $col->[$row] ? $col->[$row] : " ";
}
print "\n";
}
为什么你不能在
上拆分编码>进入一个数组,然后在|
上进入另一个级别?有什么问题吗?@NickT可以显示代码。为什么你不能在上拆分编码>进入一个数组,然后在|
上进入另一个级别?有什么问题吗?@NickT可以显示代码。为什么你不能在上拆分编码>进入一个数组,然后在|
上进入另一个级别?有什么问题吗?@NickT可以显示代码。为什么你不能在上拆分编码>进入一个数组,然后在|
上进入另一个级别?有什么问题吗?@NickT可以显示代码,请注意空格显然很重要;在问题中的示例输出中,“two-three”不会在三之后添加空格。嗯,但是我看到十四个;是否添加了空格?空格显然很重要;在问题中的示例输出中,“two-three”不会在三之后添加空格。嗯,但是我看到十四个;是否添加了空格?空格显然很重要;在问题中的示例输出中,“two-three”不会在三之后添加空格。嗯,但是我看到十四个;是否添加了空格?空格显然很重要;在问题中的示例输出中,“two-three”不会在三之后添加空格。嗯,但是我看到十四个;是否添加了空间?