Page 1 of 1

Variable formatieren

Posted: 2003-03-05 11:01
by lutz.wolf
Hallo,

ich möchte in einem Shell-Script eine Variable formatieren. Es sollen führende Nullen angefügt werden.
z.B.
$Variable hat den Wert 5 dann soll daraus 0005 werden.
$Variable hat den Wert 20 dann soll darus 0020 werden.

Wer hat eine Idee?

Danke Lutz

Re: Variable formatieren

Posted: 2003-03-05 11:09
by nils_eckert
Führende Nullen kannst du nur an Strings anhängen.

Code: Select all

while (strlen($var) < 4)
    $var = "0".$var;
Sollte dir vielleicht helfen.

$var wird automatisch nach String gecastet.

als function wäre vielleicht sowas zu gebrauchen.

Code: Select all

function null_maker ($var, $stellen) {
    while (strlen($var) < $stellen)
        $var = "0" . $var;
    return $var;
}
oder

Code: Select all

function null_maker ($var, $stellen) {
    return str_repeat("0", $stellen - strlen($var)) . $var;
}
sollte auch gehen.

Hoffe dir geholfen zu haben :-)


Gruß,

Nils

Re: Variable formatieren

Posted: 2003-03-05 12:04
by cae
Oder noch einfacher:

Code: Select all

$string = sprintf("%04s",$zahl)
Das füllt $string so mit führenden Nullen auf, dass ein vierstelliger String entsteht (z.B. 005 oder 0012 usw.)


Und mal wieder ein kleiner Hinweis auf php.net

http://www.php.net/manual/de/function.sprintf.php
--> Beispiel 5

PS: Ups... lesen sollte man können... PHP <> Shell... sorry ;)
Auf der Shell geht das mit:

Code: Select all

printf("%.4d",zahl);
Gleiches Ergebnis wie oben.

Re: Variable formatieren

Posted: 2003-03-05 13:35
by nils_eckert
Super :D

Aber (!!!) ich dachte er wollte seine Variablen formatieren und nicht formatiert ausgeben.

Code: Select all

int printf(string format [, mixed args...])
Rückgabewert schein also nicht der Formatierte String zu sein.

Code: Select all

$string = sprintf("%04s",$zahl) 
wird also wohl nicht funktionieren.

Wenn er sie nur formatiert ausgeben will, ist das wohl OK, wenn er aber die Formatierten weiter verarbeiten will, sollte er vielleicht doch meine Funktion nutzen :lol:.

Ist vielleicht auch einfacher zu handeln.


Gruß,

Nils

Re: Variable formatieren

Posted: 2003-03-05 16:07
by lutz.wolf
Ja sie soll weiter verarbeitet werden. Die Ausgabe wird in eine Datei gelenkt und als laufende Zahl für einen Dateinamen verwendet. Und nach Möglichkeit soll das Ganze in einem Shell-Script laufen also nicht Perl oder PHP.

Lutz

Re: Variable formatieren

Posted: 2003-03-05 18:23
by rob
nils_eckert wrote:

Code: Select all

$string = sprintf("%04s",$zahl) 
wird also wohl nicht funktionieren.
Du hast printf mit sprintf verwechselt.
sprintf ist auf jeden Fall dafür gedacht, Strings zu formatieren.