Thread Seriennummer (Buchstaben) hochzählen (7 answers)
Opened by Gustl at 2014-01-27 14:27

clms
 2014-01-27 15:00
#173239 #173239
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2014-01-27T13:27:54 Gustl
ich möchte aus z.B. folgender Seriennummer 10011902APWPA die darauf folgenden 1000 Seriennumern ausgeben. Wobei die Zahl immer gleich bleibt und er die letzten 5 Chars zählen soll. Von A bis Z. Wenn dann der letzten Stelle ein Z steht und hochgezählt werden muss springt dieses auf A und die nächste Stelle wird hochgezählt.

Beispiel:
10011902APYAW
10011902APYAX
10011902APYAY
10011902APYAZ
10011902APYBA
10011902APYBB

Das Inkrementieren von Strings beherrscht Perl von Haus aus. Leider funktioniert das bei Deiner Zahlen-Buchstaben-Kombi nicht direkt, da Perl dann nur die Zahl inkrementiert. Also: Buchstaben-Anteil extrahieren und diesen dann einzeln inkrementieren.

Ungetestet:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub get_new_numbers{
  my $anzahl = shift;
  my $last_sn = shift;

  # Seriennummer zerlegen
  my ($num,$str) = split(/(<=\d)(?=[A-Z])/,$last_sn);

  # Seriennummer inkrementieren und in Array schreiben
  my @back_array;
  push @back_array, $num.(++$str) foreach(1..$anzahl);

  return @back_array;
}

Einen Overflow des String-Inkrements fängt die Funktion jetzt noch nicht ab, aber dass ist laut Aufgabenstellung ja auch nicht gefordert.

View full thread Seriennummer (Buchstaben) hochzählen