NEWS
Anfängerfrage: String zerlegen text
-
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?
-
- Warum verwendest Du parseInt ???
- Warum willst Du das an 2 Ausgänge senden?
- Warum musst Du codieren??
Also fangen wir mal mit der Selbstbeantwortung meiner Fragen an:
zu 1:
https://www.w3schools.com/jsref/jsref_parseint.aspWenn 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:
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:
Im Übrigen empfehle ich Dir code sonst in code tags zu posten:
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:
zu 3:
Warum muss man immer codieren??OK - bissi JSONATA nutzen.
Hier mal ein paar Alternativen:
Die einfachste Möglichkeit habe ich natürlich wieder vergessen:
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?
-
habe getestet aber weis nicht welcher text1 ist und text2 breuchte alt array aus gang oder?
-
@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
? -
@martin-baer Wie gesagt wenn Du es an 2 Ausgänge schicken willst dann ist Dein Code ja richtig.
return [msg1, msg2];
Aber auch so was geht ohne function Nodes
-
ja vielen vielen DANK!!! es geht