3

数値を含む文字列があります。数値を逆順に表示したい。

動作しないアイデアは、組み込みの逆関数を使用することです。

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 に答える