Thread Komplexer sort (natürliche Sortierung)
(13 answers)
Opened by Student87 at 2012-11-23 17:10
du kannst den string im sort aufsplitten:
Code (perl): (dl
)
1 2 3 4 5 my @sorted = sort { my ($chr_a, $num_a) = $a =~ m/^([a-z]+)(\d+)/; my ($chr_b, $num_b) = $b =~ m/^([a-z]+)(\d+)/; $chr_a cmp $chr_b || $num_a <=> $num_b } @array; wenn es eine grosse liste ist, lohnt sich aber eine schwartzian transform. insofern ist der ansatz schon nicht schlecht, eine eigene spalte zu machen. Code (perl): (dl
)
1 2 3 4 5 6 7 my @sorted = map { $_->[2] } sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] } map { my ($chr, $num) =~ m/^([a-z]+)(\d+)/; [$chr, $num, $_] } @array; Editiert von pq: typo: cmp Last edited: 2012-11-23 17:42:27 +0100 (CET) Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |