Hallo,
kann mir bitte geholfen werden? Ich möchte Preise nach Euro und Cent splitten, habe aber nur eine zusammenhängende zahl.
2599 ist eigentlich 25,99
158989 wäre 1589,89
Wie drücke ich sowas am besten in regex aus? Mit substr komme nicht weiter, weil der "eurobereich" ja in de länge variabel ist.
"Splitte den Wert an den letzen beiden Zeichen" wäre schön aber (split /..$/,$wert) liefert nicht das gewünschte Ergebnis. (ist ja in diesem Kontex kein Suchmuster, oder?)
User since
2003-11-28
3645
Artikel
ModeratorIn
[quote=Guest,18.07.2007, 21:33]Mit substr komme nicht weiter, weil der "eurobereich" ja in de länge variabel ist.[/quote]
Wieso nicht?
warn "$_ -> ". substr($_, 0, length($_)-2) . "," . substr($_, length($_)-2)
for (2599, 158989);
Am lesbarsten dürfte ein Regexp sein:
for (2599, 158989) {
my($euro,$cent) = $_ =~ m{^(\d*)(\d{2})$};
print "$_ -> $euro,$cent\n";
}
User since
2003-08-06
2257
Artikel
ModeratorIn
geht es wirklich um das Splitten, oder nur um das Darstellen?
Im zwoten Fall tun es
und falls dann noch nötig ein
printf.
User since
2003-08-04
5873
Artikel
ModeratorIn
Was passiert, wenn die Beträge im einstelligen Centbereich liegen? steht dann da 5 oder 005?
Wenns nur um die Ausgabe geht, wie Relais schon schrieb
printf "%.2f", $zahl/100;
\n\n
<!--EDIT|Crian|1184839626-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
5873
Artikel
ModeratorIn
Macht genau was bei 5 Cent?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-06
2257
Artikel
ModeratorIn
[quote=Crian,19.07.2007, 14:22]Macht genau was bei 5 Cent?[/quote]
Tja, das macht dann 5 Euro. Zahlbar in 14 Tagen...
User since
2003-08-04
14371
Artikel
ModeratorIn
Meine Kontonummer hast Du ja ;)
User since
2003-08-04
5873
Artikel
ModeratorIn
Selbst wenns nicht ums Lesen ginge finde ich
my $betrag = 23406;
my $euro = $betrag / 100;
my $cent = $betrag % 100;
printf "macht dann genau %d,%02d EUR\n", $euro, $cent;
hübscher, eingängiger und verständlicher als das mit regulären Ausdrücken zu machen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite