Freizeichen in einer Zahl?

Freizeichen in einer Zahl?

am 05.10.2007 15:40:18 von Joe Mayo

Hallo an alle,

hat jemand eine Idee wie man freizeichen in eine Zahl einbaut ohne jetzt
einen aufwendigen Algorithmus aufzubauen?
Also jede 3. Stelle hätte ich gerne ein Freizeichen:

Also hier ein paar Beispiele:
"100" ergibt "100"
"1000" ergibt "1 000"
"10000" ergibt "10 000"
"100000" ergibt "100 000"
"1000000" ergibt "1 000 000"
usw.

Ich bin mir sicher hier hat jemand eine Idee wie man das in einer Zeile
schreibt ohne große "for" Schleife. Vermutlich etwas im Stil wie:
$zahl =~ s/irgendwas/print irgendwar/g; ?

--
-= Joe Mayo* =-
* This is a fake name.

Re: Freizeichen in einer Zahl?

am 05.10.2007 16:09:58 von Frank Seitz

Joe Mayo wrote:
>
> hat jemand eine Idee wie man freizeichen in eine Zahl einbaut ohne jetzt
> einen aufwendigen Algorithmus aufzubauen?
> Also jede 3. Stelle hätte ich gerne ein Freizeichen:
>
> Also hier ein paar Beispiele:
> "100" ergibt "100"
> "1000" ergibt "1 000"
> "10000" ergibt "10 000"
> "100000" ergibt "100 000"
> "1000000" ergibt "1 000 000"
> usw.
>
> Ich bin mir sicher hier hat jemand eine Idee wie man das in einer Zeile
> schreibt ohne große "for" Schleife. Vermutlich etwas im Stil wie:
> $zahl =~ s/irgendwas/print irgendwar/g; ?

Ich finde die Lösung mit einer Schleife verständlicher,
aber hier findest du auch eine Regex-Lösung:

$ perldoc -q "numbers with commas added"

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: Freizeichen in einer Zahl?

am 05.10.2007 16:15:23 von Michael Ablassmeier

hi,

Joe Mayo schrieb:
> Hallo an alle,
>
> hat jemand eine Idee wie man freizeichen in eine Zahl einbaut ohne jetzt
> einen aufwendigen Algorithmus aufzubauen?
> Also jede 3. Stelle hätte ich gerne ein Freizeichen:

zummindest für gsed kann ich dir hier eine Lösung unterbreiten, eventuell
lässt sich das ja in perl adaptieren:

echo 100 | sed ':a;s/\B[0-9]\{3\}\>/ &/;ta'
100
echo 1000 | sed ':a;s/\B[0-9]\{3\}\>/ &/;ta'
1 000
echo 10000 | sed ':a;s/\B[0-9]\{3\}\>/ &/;ta'
10 000

bye,
- michael