Variable formatieren

Bash, Shell, PHP, Python, Perl, CGI
lutz.wolf
Posts: 66
Joined: 2003-01-18 17:40

Variable formatieren

Post 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
nils_eckert
Posts: 41
Joined: 2002-11-30 12:05

Re: Variable formatieren

Post 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
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München

Re: Variable formatieren

Post 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.
nils_eckert
Posts: 41
Joined: 2002-11-30 12:05

Re: Variable formatieren

Post 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
lutz.wolf
Posts: 66
Joined: 2003-01-18 17:40

Re: Variable formatieren

Post 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
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: Variable formatieren

Post 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.