zeichenketten durchsuchen
Dominique Stender
- perl
Hallo!
Ich habe mal wieder ein Problem mit Perl.
Und zwar habe ich eine beliebige Zahl einer bestimmten Form.
Am Anfang steht eine beliebige Anzahl Nullen (evtl auch 0 Nullen), dahinter eine beliebige Ziffernfolge, die evtl auch Nullen enthalten kann. Ich muß die Zahl so modifizieren, daß genau der zweite Teil übrig bleibt:
00012231 ----> 12231
00012201 ----> 12201
22231000 ----> 22231000
Mir kamen schon index und rindex in den Sinn, diese scheinen mir aber nicht geeignet, weil ja auch in dem zweiten Teil der Zahl Nullen enthalten sein können.
Ich bin sicher Euch fällt wie immer was ein - Danke!!
Dominique
Hallo Dominique
00012231 ----> 12231
00012201 ----> 12201
22231000 ----> 22231000
Mir kamen schon index und rindex in den Sinn, diese scheinen mir aber nicht geeignet, weil ja auch in dem zweiten Teil der Zahl Nullen enthalten sein können.
Da Perl skalare Variablen wahlweise als Zeichenketten oder Zahlen behandelt, kannst du jederzeit regulaere Ausdruecke und damit verbundene Suche-Ersetze-Vorgaenge darauf anwenden.
Beispiel:
$Wert = "00012231";
$Wert =~ s/0*([1-9]*)/$1/;
print "$Wert\n";
viele Gruesse
Stefan Muenz
Phew!
Noch jemand der um diese unchristliche Zeit schon aktiv ist... danke für die schnelle Hilfe!
MfG
Dominique
Hi,
viele Wege führen nach Rom:
Beispiel:
$Wert = "00012231";
$Wert =~ s/0*([1-9]*)/$1/;
$Wert =~ s/^0*//;
$Wert = $Wert + 0; # oder noch besser:
$Wert += 0;
print "$Wert\n";
Ich würde die letzte Methode benutzen, weil sie sicherlich am "billigsten" ist :-)
Cheatah
Hallo auch!
viele Wege führen nach Rom:
Jepp - ich nehme nicht die Straße, sonder das Flugzeug ;-)
Beispiel:
$Wert = "00012231";
$Wert =~ s/0*([1-9]*)/$1/;$Wert =~ s/^0*//;
$Wert = $Wert + 0; # oder noch besser:
$Wert += 0;
$Wert =~ s/^0*\B//;
print "$Wert\n";
Hier kann man sich das addieren von Null sparen (welches bei 0000 nötig war, da hier ja dummerweise
ALLE Nullen gelöscht wurden). Der Trick besteht darin, durch \B anzugeben, daß hinter den Nullen
KEINE Wortgrenze sein soll, wie sie am Ende der Zahl bestünde.
Jörk