NEWS

[Vorlage] Zifferngruppe und Ersetzen von Dezimaltrennzeichen



  • Hallo zusammen,

    im Zuge der Erstellung von PushBenachrichtigungen für die Familie jeden Morgen, um das Infektionsgeschehen des CoronaVirus (Adapter) im Auge zu behalten habe ich mich etwas mit der Behandlung bzw. Änderungen von Zahlenwerten beschäftigt. Da ich viel mit Blockly mache sind meine ersten Versuche auch mit Blockly-Bausteinen selber gewesen. Relativ schnell habe ich gemerkt, dass ich auf keinen grünen Zweig komme und habe mich etwas mit JavaScript beschäftigt. Als ich dann noch entdeckt habe, dass es möglich ist JavaScript Funktionen in Blockly mit Informationen zu füttern habe ich mich an zwei Funktionen zur Datenaufbereitung gewagt, die sich die Familie gewünscht hat.

    1. Punkt als Trennung bei großen Zahlen
      Beispiele: 5960 → 5.960 | 27 → 27 | 2739417 → 2.739.417

    2. Konvertiere Punkt in Komma
      Beispiele: 27.38 → 27,38 | 938.1 → 938,1

    JavaScript Funktionen man mit folgendem Baustein sehr leicht in Blockly integrieren:

    JavaScriptBausteinReturn.png

    Diesen Baustein einfach nach rechts rausziehen und loslassen. Damit ist der Baustein bereit bearbeitet zu werden.

    Zu 1. - Punkt als Trennung bei großen Zahlen:

    Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion "Punkt bei Tausendern". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "DigitGrouping" um.

    CreateVar.png

    Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

    DigitGrouping = '' + DigitGrouping;
    if (DigitGrouping.length > 3) {
        var mod = DigitGrouping.length % 3;
        var output = (mod > 0 ? (DigitGrouping.substring(0,mod)) : '');
        for (i=0 ; i < Math.floor(DigitGrouping.length / 3); i++) {
            if ((mod == 0) && (i == 0))
            output += DigitGrouping.substring(mod+ 3 * i, mod + 3 * i + 3);
            else
            // hier wird das Trennzeichen festgelegt mit '.'
            output+= '.' + DigitGrouping.substring(mod + 3 * i, mod + 3 * i + 3);
            }
        return (output);
        }
    else return DigitGrouping;
    

    Quelle des Codes

    Nach einem Klick auf Speichern ist der Baustein soweit startklar. Neben der neuen Variable "DigitGrouping" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

    neuerBaustein.png

    Jetzt können wir loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere unterteilte Zahl ausgeben lassen. Das Ergebnis im log lautet "284.923".

    DigitGrouping.PNG

    So wird das Skript nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist natürlich ein Trigger notwendig.

    Zu 2. - Konvertiere Punkt in Komma:

    Wir nutzen wieder den gleichen Baustein wie bei 1. Punkt. Anstatt "etwas tun" schreiben wir zur Beschreibung der Funktion diesmal "Konvertiere Punkt zu Komma". Danach erstellen wir eine Variable über das Zahnrad, die der JavaScript Funktion übergeben werden kann und benennen diese von "x" auf "ConvertString" um.

    CreateVar2.png

    Nach einem Klick auf das Zahnrad verschwindet das PopUpMenü wieder. Wir können nun die eigentliche Funktion einfügen. Dazu gehen wir auf die drei Punkte ganz rechts und fügen folgendes dort ein:

    ConvertString = ConvertString.toString().replace('.', ',');
    
    return ConvertString;
    

    Nach einem Klick auf Speichern ist auch dieser Baustein soweit startklar. Neben der neuen Variable "ConvertString" wurde auch ein neuer Baustein unter "Funktionen" erstellt:

    neuerBaustein2.png

    Jetzt können wir auch hier loslegen und das Skript nutzen. Mit Hilfe des neuen Bausteins können wir z.B. über den LogAusgabeBaustein (debug output) unsere "konvertierte" Zahl ausgeben lassen. Das Ergebnis im log lautet "27,84".

    ConvertString.PNG

    Auch hier wird das Skript so nur einmal beim Speichern (wenn das Skript bereits ausgeführt wird) ausgeführt. Für zyklische Ausführungen ist ein Trigger notwendig.

    Das wars 😁 Da ich nie das gefunden habe, was ich suchte habe ich diesen Thread eröffnet, um anderen Suchenden eine Hilfe zu bieten. Alle Variablennamen können individuell angepasst werden, im Skript muss dann analog auch der Variablenname angepasst werden.



  • @obakuhl mit Node 14.x funktioniert auch Intl.NumberFormat('de-DE').format(12345.67)

    javascript.0 (250) script.js.Aktiv.ScriptJS: 12.345,67
    


Suggested Topics

1.9k
Online

32.4k
Users

39.0k
Topics

528.1k
Posts