Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Zerlegen von Zeichenketten in Blockly

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zerlegen von Zeichenketten in Blockly

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

      Ahoi!

      Ich hab da mal ein paar Fragen zum "zerlegen":
      Ich verarbeite meine Alarmierungen der Feuerwehr im ioBroker. Dazu wird die Alarmmeldung als String in einen Datenpunkt geschrieben. Der Text ist in html, da dort auch Zeilenumbrüche per <br /> drin stehen. Die Meldung übergebe ich zum einen an Telegram und zum anderen an Alexa zum vorlesen. Nun hört sich das mit den html-Zeilenumbrüchen natürlich blöd an und ich möchte vor allem auch nicht den kompletten Text haben.
      Wie weit lässt sich so ein Werte-Feld auseinanderschneiden...und vor allem wie?!? Der Aufbau ist ungefähr so:
      EINSATZOBJEKT: xxx <br /><br />WACHEN IM EINSATZ: xxxx <br /><br />MELDEZEIT:
      Am besten wäre es, wenn die Daten von EINSATZOBJEKT bis vors erste <br> in eine Variable geschrieben werden. Das gleiche mit WACHEN IM EINSATZ und MELDEZEIT. Die <br> würde ich am liebsten per suchen/ersetzen entfernen, wenn überhaupt noch notwendig. Genial wäre es am Ende, wenn ich diesen Datenpunkt so zerlegt bekomme, das die Inhalte in 3 Variablen stehen und weiterverarbeitet werden können.

      Ich habe auch schon den Parsemode in dem Telegram Blockly auf html umgestellt, aber da mault das Log an, dass das <br/> kein html ist?!!? 😉

      Besten Dank
      sven

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

        @hinsen2k sagte in Zerlegen von Zeichenketten in Blockly:

        Am besten wäre es, wenn die Daten von EINSATZOBJEKT bis vors erste <br> in eine Variable geschrieben werden. Das gleiche mit WACHEN IM EINSATZ und MELDEZEIT. Die <br> würde ich am liebsten per suchen/ersetzen entfernen, wenn überhaupt noch notwendig. Genial wäre es am Ende, wenn ich diesen Datenpunkt so zerlegt bekomme, das die Inhalte in 3 Variablen stehen und weiterverarbeitet werden können

        Ich würde mit regulären Ausdrücken arbeiten, wenn das immer den gleichen Aufbau hat.

        Auf die 1. Gruppe greifst Du mit $1 zu, auf die 2. Gruppe mit $2 und 3. Gruppe mit $3etc.

        Diese Variablen $1,$2,$3 kannst Du dann in eigene Datenpunkte schreiben:

        6b467889-7f81-40f9-b483-8db711bc28c6-image.png

        hier kannst Du das selbst ausprobieren: https://regex101.com/r/QwwzEd/1

        Wie man reguläre Ausdrücke im Blockly nutzt musst Du, falls Du es nicht selbst weißt, einen Blockly Fachmann fragen,

        H 1 Reply Last reply Reply Quote 0
        • H
          hinsen2k @mickym last edited by

          @mickym Besten Dank!

          Allerdings muss ich gestehen, dass ich nur Bahnhof verstehe und so gut deine Hilfestellung bestimmt auch ist - ich nicht weiß, wie ich sie in meinem iobroker bzw. blockly umsetzen könnte.
          Blockly ist bisher mein erster Versuch, selbst zu experimentieren und zu probieren und ich bin schon recht happy bis hierhin. Bei allem weiteren hab ich noch keine Ahnung.

          David G. mickym 2 Replies Last reply Reply Quote 0
          • David G.
            David G. @hinsen2k last edited by David G.

            @hinsen2k

            Bin selber noch ziemlicher Anfänger.
            Hab es gtad mal getestet. Anstatt den Wert in eine Variable zu schreiben hab ich mir das Ergebnis grad per telegram senden lassen.

            Müsste man dann für jeden Wert einmal so bauen.
            Ob es leichter geht, weiß ich nicht......

            Muss es leider in mehreren Bildern machen, anders bekomme ich es am Handy nicht hin.

            Screenshot_20210529-211641_Chrome.jpg
            Screenshot_20210529-211629_Chrome.jpg
            Screenshot_20210529-211621_Chrome.jpg

            Als Ergebnis bekomme ich dann "EINSATZOBJEKT: Haus"

            Wenn hinter dem Variablen Wert immer eine Leerstelle kommt, Recht es diese anstatt dem br einzutragen.

            P.S.
            <br /> ist kein HTML. Müsste nur ein <br> sein.

            Ggf hilf auch das weiter, so könntest du das br ersetzen.

            klick

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

              @hinsen2k Wenn Du weißt wir Du eine JS Funktion in Blockly einbindest, dann hier die Funktion:

              function feuerwehr(string){
              var obj= {"Einsatz":"" , "Wachen" : ""};
              var re =  /EINSATZOBJEKT: (.*?) <br.*WACHEN IM EINSATZ: (.*?) <br/;  
              string.replace(re, '$2, $1'); 
              obj.Einsatz = RegExp.$1;
              obj.Wachen = RegExp.$2;
              return obj;
              }
              

              Du bekommst dann ein Objekt zurück:
              4efb155d-0372-4f7e-9281-91c423905976-image.png

              das genau so aussieht.

              Der Funktion feuerwehr übergibst Du einfach den Wert Deines Datenpunktes aus dem Blockly.

              H 1 Reply Last reply Reply Quote 0
              • H
                hinsen2k @mickym last edited by

                @mickym
                Ich glaube, dass ich das hinbekomme! 🙂 Danke für deine Unterstützung!!

                Ich experimentiere mal!

                @david-g

                Danke auch für deinen Ansatz. Ich teste auch das 🙂

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

                Support us

                ioBroker
                Community Adapters
                Donate

                856
                Online

                32.0k
                Users

                80.5k
                Topics

                1.3m
                Posts

                3
                6
                2143
                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