In meiner Library JavaScriptClassEnhancements finden Sie neben vielen anderen Methoden die Erweiterung String.format(string, string, string,…);

In diesem Beitrag möchte ich den Anwendern, die diese oder ähnliche Methoden noch nicht aus anderen Programmiersprachen kennen, kurz an einem Beispiel erläutern, was sie damit anfangen kann.

Allgemein beschrieben dient String.format() dazu, in einer Stringvorlage auf einfache Art einzelne Platzhalter durch Strings zu ersetzen.

Als Beispiel dient mir hier eine komplexe Meldungsausgabe bei einer Fehlerbehandlung.

Zwei eingebaute Funktionen ermitteln das aktuelle deutsche Datum und die aktuelle Uhrzeit.

#include "StringArrayProtoTypes.jsx"
// global Object
var gO = {};
gO.ErrorMessageTemplate = "Fehlermeldung: {0}\nin Zeile: {1}\nDatum: {2}\nUhrzeit: {3}\nStack: {4}";
main()
/*void*/function main()
{
    DoSomeThing();
    return;
    /*void*/function DoSomeThing()
    {
        try
        {
            // eine Fehlerunterbrechung erzeugen
            var fehler = Fehlermeldung;
         }
        catch (error)
        {
            // Erzeugung des kompletten Datums ohne String.format()
            /*
                    alert(
                                "Fehlermeldung: " + error.message + "\nin Zeile: " + error.line +
                                "\nDatum: " +  getGermanLongDate() + \nUhrzeit: + getGermanTime() +
                                "\nStack: {4}" $.stack;
                    );
               */
            // Erzeugung des kompletten Datums mit String.format()
            alert(gO.ErrorMessageTemplate.format(error.message, error.line,
                getGermanLongDate(), getGermanTime(), $.stack));
        }
        return;
    }
    /*string*/function getGermanLongDate(/*Date*/ d)
    {
        // erzeugt eine deutsches Datum in der Form:
        // Wochentag, den Monatstag. Monatsnamen Jahr (4-stellig)
        // d -> übergebenes Datumsobjekt, wenn nicht vorhanden, aktuelles Datum
        if (d==null)
            d = new Date();
        // Monatsnamen definieren
        var months = ["Januar",  "Februar", "März", "April", "Mai", "Juni", "Juli",
            "August", "September", "Oktober", "November", "Dezenber"];
        // Tagesnamen definieren
        var days = ["Sonntag",  "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
        // Erzeugung des kompletten Datums ohne String.format()
        /*
                return days[d.getDay()] + ", den " + d.getDate() + ". " + months[d.getMonth()] + d.getFullYear();
           */
        // Erzeugung des kompletten Datums mit String.format()
        return "{0}, den {1}. {2} {3}".format(days[d.getDay()], d.getDate(), months[d.getMonth()] , d.getFullYear());
    }
    /*string*/function getGermanTime(/*Date*/ d)
    {
        // erzeugt eine Zeitangabe ind der Form
        // hh:mm:ss
        // .padLeft("0",2) -> Bestandteil von "StringArrayProtoTypes.jsx"
        if (d==null)
            d = new Date();
        // Erzeugung des kompletten Datums ohne String.format()
        /*
                return "d.getHours().toString().padLeft("0",2) + ":" + d.getMinutes().toString().padLeft("0",2) +
                ":" + d.getSeconds().toString().padLeft("0",2);
           */
        // Erzeugung des kompletten Datums mit String.format()
        return "{0}:{1}:{2}".format(d.getHours().toString().padLeft("0",2),
            d.getMinutes().toString().padLeft("0",2), d.getSeconds().toString().padLeft("0",2));
    }
}