Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Anfängerfrage: String zerlegen text

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Anfängerfrage: String zerlegen text

    This topic has been deleted. Only users with topic management privileges can see it.
    • Martin Baer
      Martin Baer last edited by

      möchte einen eingehenden String : "text1,text2" in die zwei Werte text1 und text2 zerlegen.
      In einer Funktion habe ich folgendes geschrieben:

      var output = msg.payload.split (",");

      var Wert1 = parseInt(output[0]);
      var Wert2 = parseInt(output[1]);

      var msg1 = {payload:Wert1};
      var msg2 = {payload:Wert2};

      return [msg1, msg2];

      beckomme nan raus weil keine zahlen sondern buchstaben sind?

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Martin Baer last edited by mickym

        @martin-baer

        1. Warum verwendest Du parseInt ???
        2. Warum willst Du das an 2 Ausgänge senden?
        3. Warum musst Du codieren??

        Also fangen wir mal mit der Selbstbeantwortung meiner Fragen an:
        zu 1:
        https://www.w3schools.com/jsref/jsref_parseint.asp

        Wenn Du Dir die Referenz zu parseInt anschaust, dient es dazu Zahlen in einem String in Zahlen umzuwandeln. Du willst aber nur einen Text zerlegen. Wenn Du den gelben Text in der Funktionsbeschreibung anschaust dann steht da:

        b854145e-6343-42d6-b11c-943e74ebf07b-image.png

        Wenn das 1. Zeichen ein Buchstabe und keine Zahl ist, dann wird NaN (Not a Number) zurückgegeben.
        Also einfach weglassen.

        zu 2. Wenn Du 2 Nachrichten erzeugen willst, aber keine 2 Ausgänge benutzen willst (sonst musst Du halt in der function Node die Anzahl der Ausgänge erhöhen, dann musst Du ein geschachteltes Array verschicken.

        Dein Code vereinfacht sich also wie folgt:
        3736b6e7-4df5-4cf3-b2d7-3abc9d7cd317-image.png

        Im Übrigen empfehle ich Dir code sonst in code tags zu posten:

        Code-Tags.gif

        Also sieht Dein Code so aus:

        var output = msg.payload.split(",");
        
        var Wert1 = output[0];
        var Wert2 = output[1];
        
        var msg1 = { payload: Wert1 };
        var msg2 = { payload: Wert2 };
        
        return [[msg1, msg2]];
        

        Wie gesagt, mit einem Array dann halt an 2 Ausgänge senden und Anzahl erhöhen:
        2fd36023-6d58-4297-8828-838dd878db4c-image.png

        zu 3:
        Warum muss man immer codieren??

        OK - bissi JSONATA nutzen.

        Hier mal ein paar Alternativen:

        e6cfce58-971b-44f3-8358-37b3d26d9318-image.png

        [
           {
               "id": "4c13d60e1678f3c8",
               "type": "inject",
               "z": "7e6af0015415146d",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "text1,text2",
               "payloadType": "str",
               "x": 3240,
               "y": 1380,
               "wires": [
                   [
                       "5b8fc51ecf2d321b",
                       "17967ab014d7443e",
                       "afcf07b366af482e"
                   ]
               ]
           },
           {
               "id": "5b8fc51ecf2d321b",
               "type": "function",
               "z": "7e6af0015415146d",
               "name": "function 3",
               "func": "var output = msg.payload.split(\",\");\n\nvar Wert1 = output[0];\nvar Wert2 = output[1];\n\nvar msg1 = { payload: Wert1 };\nvar msg2 = { payload: Wert2 };\n\nreturn [[msg1, msg2]];",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 3400,
               "y": 1380,
               "wires": [
                   [
                       "b6b50207e946dd31"
                   ]
               ]
           },
           {
               "id": "b6b50207e946dd31",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "String zerlegen (function Node)",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 3630,
               "y": 1380,
               "wires": []
           },
           {
               "id": "8a02e830b1d0d6cf",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "String zerlegen (change Node)",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 3830,
               "y": 1440,
               "wires": []
           },
           {
               "id": "17967ab014d7443e",
               "type": "change",
               "z": "7e6af0015415146d",
               "name": "",
               "rules": [
                   {
                       "t": "set",
                       "p": "payload",
                       "pt": "msg",
                       "to": "$split(payload, \",\")\t",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 3430,
               "y": 1440,
               "wires": [
                   [
                       "0f32bdcf1faf927f"
                   ]
               ]
           },
           {
               "id": "0f32bdcf1faf927f",
               "type": "split",
               "z": "7e6af0015415146d",
               "name": "",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "",
               "x": 3610,
               "y": 1440,
               "wires": [
                   [
                       "8a02e830b1d0d6cf"
                   ]
               ]
           },
           {
               "id": "afcf07b366af482e",
               "type": "csv",
               "z": "7e6af0015415146d",
               "name": "",
               "sep": ",",
               "hdrin": "",
               "hdrout": "none",
               "multi": "one",
               "ret": "\\n",
               "temp": "",
               "skip": "0",
               "strings": true,
               "include_empty_strings": "",
               "include_null_values": "",
               "x": 3410,
               "y": 1500,
               "wires": [
                   [
                       "4a131c757fecb94a"
                   ]
               ]
           },
           {
               "id": "40095f2849a62591",
               "type": "debug",
               "z": "7e6af0015415146d",
               "name": "String zerlegen (csv Node)",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 3780,
               "y": 1500,
               "wires": []
           },
           {
               "id": "4a131c757fecb94a",
               "type": "split",
               "z": "7e6af0015415146d",
               "name": "",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "",
               "x": 3550,
               "y": 1500,
               "wires": [
                   [
                       "40095f2849a62591"
                   ]
               ]
           }
        ]
        

        Die einfachste Möglichkeit habe ich natürlich wieder vergessen:

        68a20a93-b870-4b66-a318-fe8f4b3bfea8-image.png

        NUR eine Split Node nehmen und Komma, als Separator eingeben. Da MUSS man nichts codieren und das ist doch der Sinn - oder möchtest Du gerne Javascript programmieren lernen?

        Martin Baer 1 Reply Last reply Reply Quote 0
        • Martin Baer
          Martin Baer @mickym last edited by

          habe getestet aber weis nicht welcher text1 ist und text2 breuchte alt array aus gang oder?

          Martin Baer 1 Reply Last reply Reply Quote 0
          • Martin Baer
            Martin Baer @Martin Baer last edited by

            @martin-baer sagte in Anfängerfrage: String zerlegen text:

            habe getestet aber weis nicht welcher text1 ist und text2 breuchte alt array ausgang 0 oder 1
            ?

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Martin Baer last edited by mickym

              @martin-baer Wie gesagt wenn Du es an 2 Ausgänge schicken willst dann ist Dein Code ja richtig.

              return [msg1, msg2];
              

              7c5d6f2b-5d95-4986-bf5b-649d7dfe0923-image.png

              Aber auch so was geht ohne function Nodes

              44da273d-217e-4ae8-8b30-549bf67224f3-image.png

              [
                 {
                     "id": "8cb5311a3154ebf8",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "text1,text2",
                     "payloadType": "str",
                     "x": 3180,
                     "y": 1900,
                     "wires": [
                         [
                             "b9346a813c4d7c3b"
                         ]
                     ]
                 },
                 {
                     "id": "b9346a813c4d7c3b",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "$split(payload, \",\")\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 3370,
                     "y": 1900,
                     "wires": [
                         [
                             "4cb15c60aaf7f796",
                             "26a3bf2ba1345d71"
                         ]
                     ]
                 },
                 {
                     "id": "8dbcbd961d8faaee",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "String zerlegen (change Node) = Flow 1",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 3880,
                     "y": 1880,
                     "wires": []
                 },
                 {
                     "id": "91bcff1413175bc5",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "String zerlegen (change Node) = Flow 2",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 3880,
                     "y": 1920,
                     "wires": []
                 },
                 {
                     "id": "4cb15c60aaf7f796",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload[0]",
                             "tot": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 3590,
                     "y": 1880,
                     "wires": [
                         [
                             "8dbcbd961d8faaee"
                         ]
                     ]
                 },
                 {
                     "id": "26a3bf2ba1345d71",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload[1]",
                             "tot": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 3590,
                     "y": 1920,
                     "wires": [
                         [
                             "91bcff1413175bc5"
                         ]
                     ]
                 }
              ]
              

              Martin Baer 1 Reply Last reply Reply Quote 0
              • Martin Baer
                Martin Baer @mickym last edited by

                ja vielen vielen DANK!!! es geht

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                1.0k
                Online

                31.7k
                Users

                79.7k
                Topics

                1.3m
                Posts

                2
                6
                294
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo