3

我有一个包含数值的字符串。我想以相反的顺序显示数值。

一个行不通的想法是使用内置的 reverse 函数:

my $j = "12,11,10,9";
my $k = reverse($j);
print $k;

但是该代码输出:

9,01,11,21

当我们想要:

9,10,11,12
4

3 回答 3

11

简洁版:

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
于 2012-11-14T23:51:51.957 回答
3

将字符串放入数组中,然后反转数组输出。您只是将完整的字符串按原样反转。

@j_array = split(/,/, $j);
于 2012-11-14T23:52:41.720 回答
0

由于您没有提供有关输入来源的任何信息,因此常见 reverse()答案的替代方法是发出sort

http://codepad.org/q3dIkzO4

my $j = "12,11,10,9";
my $k = join ',' , sort {$a <=> $b} split /,/ , $j;

print $j, "\n";
print $k;

同一件事分解成更多行:

http://codepad.org/pwTvg1c1

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;
于 2012-11-14T23:59:00.513 回答