Kurzprogrammiertipp: Zahl mit führenden Nullen formatieren

Eine (unbekannt lange) Zahl zum Beispiel fünfstellig mit führenden Nullen zu formatieren kann kompliziert sein, denn die naheliegende Lösung: „Schauen wieviele Stellen die Zahl hat und dann die entsprechende Anzahl Nullen davorsetzen“ bedeutet einiges an kompliziertem If-Gebastel.

Hier also die einzeilen Lösung in Javascript die quasi in jeder modernen Programmiersprache ähnlich geht:

> zahl = 123
> ("00000" + zahl).slice(-5);
'00123'

> zahl = 1
> ("00000" + zahl).slice(-5);
'00001'

> zahl = 12345
> ("00000" + zahl).slice(-5);
'12345'

Einfach mal die maximale Anzahl an Nullen vorne dran setzen und dann die gewünschte Länge des endgültigen Wertes von rechts her abscheiden. Simpel und einfach lesbar!


Beitrag veröffentlicht

in

,

von

Schlagwörter:

Kommentare

5 Antworten zu „Kurzprogrammiertipp: Zahl mit führenden Nullen formatieren“

  1. Blöd, wenn man eine Sprache ohne printf nutzen muss, nicht?

    printf("%05d",zahl);

    1. Bernd

      Mein Gedanke – „Dafür gibt es doch Formatstrings oO“. Ist also nichtmal zwingend eine Eigenschaft von printf.

      Allerdings hat JS tatsächlich keine echten Formatstrings und sich nur wegen sowas eine ganze library an problem ins programm zu holen ist wahrscheinlich auch nicht gut.

      Für den individuellen Anwendungsfalls also eine gute Lösung. Sollten sich mehr solcher Probleme auftun würde ich drüber nachdenken die Sprache zu wechseln oder eine passende Library zu installieren.

      Viele Grüße

      Bernd

  2. benediktg

    ECMAScript 2017 bietet eine Methode dafür: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

    > let zahl = 123;
    > String(zahl).padStart(5, ‚0‘);
    ‚00123‘

  3. Andreas

    Heee? Also geile Idee, aber ich dachte eiigentlich slice wäre ne Array funktion 😀

  4. Axel

    Cool, danke, hat mir sehr geholfen in meiner Google Script Anwendung!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.