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

hlubenow
 2019-08-23 16:03
#190390 #190390
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Quote
'3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln

Am liebsten benutze ich "Bordmittel", also wenn möglich keine Module, kein map() und so wenig RegEx wie möglich. Nur einfache Datenverarbeitung mit Variablen.
Manche finden das seltsam (aber ich find's am besten lesbar). :)
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
24
25
26
27
28
29
#!/usr/bin/perl

use warnings;
use strict;

sub text_to_list {
    my $a = shift;
    my @b = split(/,/, $a);
    my ($i, $u);
    my (@c, @d);
    for $i (@b) {
        if ($i =~ /-/) {
            @c = split(/-/, $i);
            for $u ($c[0] .. $c[1]) {
                push(@d, $u);
            }
            next;
        }
        push(@d, $i);
    }
    return @d;
}

# (3,6,7,8,9,10,16,23) 
my $i;
my @result = text_to_list("3,6-10,16,23");
for $i (@result) {
    print "$i\n";
}

View full thread '3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln