数値を含む文字列があります。数値を逆順に表示したい。
動作しないアイデアは、組み込みの逆関数を使用することです。
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;