NEWS
Zerlegen von Zeichenketten in Blockly
-
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 -
@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:
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,
-
@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. -
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.
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.
-
@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:
das genau so aussieht.
Der Funktion feuerwehr übergibst Du einfach den Wert Deines Datenpunktes aus dem Blockly.
-