Thread '3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln
(12 answers)
Opened by mixxer at 2019-08-22 22:28
Ich hab letztendlich zu 95 % den Vorschalg von haj übernommen, weil der doch so ziemlich alles erschlägt, was irgendwie falsch laufen kann bei der Eingabe && doch die guten ins Töpfchen liest && ich den Code jetzt zu mindestens 80% verstehe.
Ich markiere mal gelöst und vielen Dank nochmal an Alle! Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #!/usr/bin/perl use strict; use warnings; my $text = ' ,,, 1,3, , ,5-7,,0011,0015-19-22,A12q,ü,, - ,'; print join ",", @{ &_text_to_list($text) }; sub _text_to_list # { my $string = shift; my ( @list, %hash ); $string =~ s/\s+//g; @list = split( ',', $string ); @list = map { # /^(\d+)-(\d+)$/ ? ( $1 .. $2 ) : # /^0*(\d+)$/ ? ($1) : # () } @list; %hash = map { $_ => 1 } @list; @list = sort { $a <=> $b } keys %hash; return \@list; } Update: mit anonymem Hash: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sub _text_to_list # { my $string = shift; my @list; $string =~ s/\s+//g; @list = split( ',', $string ); @list = map { # /^(\d+)-(\d+)$/ ? ( $1 .. $2 ) : # /^0*(\d+)$/ ? ($1) : # () } @list; # anonHash anstatt realHash: @list = sort { $a <=> $b } keys %{ { map { $_ => $_ } @list } }; return \@list; } Update2: Anonyme Listen auch noch dazu. Nach meinem Geschmack jedoch viel schlechter zu lesen... Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sub _text_to_list # { my $string = shift; $string =~ s/\s+//g; return \@{ [ sort { $a <=> $b } keys %{ { map { $_ => $_ } map { /^(\d+)-(\d+)$/ ? ( $1 .. $2 ) : /^0*(\d+)$/ ? ($1) : () } split( ',', $string ) } } ] }; } Last edited: 2019-08-24 15:18:11 +0200 (CEST) |