我有一个包含数值的字符串。我想以相反的顺序显示数值。
一个行不通的想法是使用内置的 reverse 函数:
my $j = "12,11,10,9";
my $k = reverse($j);
print $k;
但是该代码输出:
9,01,11,21
当我们想要:
9,10,11,12
简洁版:
my $j = "12,11,10,9";
print join ",", reverse split /,/, $j;
括号版本:
my $j = "12,11,10,9";
print(join(",", reverse(split(/,/, $j))));
如果我稍微分解一下:
my $j = "12,11,10,9";
my @j = split /,/, $j;
print join ",", reverse @j;
输出
9,10,11,12
笔记
perldoc -f reverse
将字符串放入数组中,然后反转数组输出。您只是将完整的字符串按原样反转。
@j_array = split(/,/, $j);
由于您没有提供有关输入来源的任何信息,因此常见 reverse()
答案的替代方法是发出sort
:
my $j = "12,11,10,9";
my $k = join ',' , sort {$a <=> $b} split /,/ , $j;
print $j, "\n";
print $k;
同一件事分解成更多行:
my $j = "12,11,10,9"; # Original string
my @k = split ',', $j; # Breaking the numbers into an array
@k = sort {$a <=> $b} @k; # Applying a sort (could use "reverse()" in its place)
my $k = join ',' , @k; # Combine the numbers with a comma
print $j,"\n";
print $k;