NEWS
(OK) Frage: String alle Zeichen bis zur ersten { löschen
-
Kann mir jemand kurz helfen.
Ich bekomme einen String, der exemplarisch so aussieht:
Infotext bla bla 4711, 0815 {hier steht der Teil, der mich interessiert (JSON)}
Nun möchte ich in Node-Red per Javascript alles vor der ersten geschweiften Klammer wegschmeissen.
-
Kleiner Nachtrag noch: Sollte eine Meldung direkt mit der geschweiften Klammer beginnen, dann soll sich am String nichts ändern.
-
Hallo,
also du kannst erstmal nach der ersten öffnenden geschweiften Klammer im Text suchen. Der Wert von indexOf gibt dir die Position im String an.
Dann suchst du die letzte geschweifte Klammer zu mit lastIndexOf(). Das ist die Endposition. Mit substring() kannst du den Teil zwischen diesen Positionen herauslösen und verwenden.
quelle = 'Infotext bla bla 4711, 0815 {hier steht der Teil, der mich interessiert (JSON)}'; pos_klammer_auf = quelle.indexOf('{'); pos_klammer_zu = quelle.lastIndexOf('}'); ergebnis = quelle.substring(pos_klammer_auf, pos_klammer_zu);
Das ist eine sehr einfache Art. Wenn du dich einlesen willst, schau auch mal nach subst(),Slice(),split() zB http://wiki.selfhtml.org/wiki/JavaScript/Objekte/String nach.
Gruß
Pix
PS: Das funktioniert natürlich nur, wenn es dir auf die erte und letzte Klammer ankommt (nur ein Klammernpaar vorkommt). indexOf sucht immer das erste Vorkommen, lastIndexOf immer das Letzte.
-
Super Pix!
Das hat funktioniert!! Danke! Danke!
Dass das in Javascript so einfach geht.
Bei der letzten Position hat es noch ein +1 gebraucht.
ergebnis = quelle.substring(pos_klammer_auf, pos_klammer_zu+1);
Danke Dir noch einmal.
Jetzt bekomme ich schon einmal jede Meldung im Geofence Node-red Flow mit
Gruß
Michael
-
Sollte auch so gehen:
var quelle = 'Infotext bla bla 4711, 0815 {hier steht der Teil, der mich interessiert (JSON)}'; var match = quelle.match(/{(.*)}/);// Regex var ergebnis = match ? match[0] : null;
-
Sollte auch so gehen:
var quelle = 'Infotext bla bla 4711, 0815 {hier steht der Teil, der mich interessiert (JSON)}'; var match = quelle.match(/{(.*)}/);// Regex var ergebnis = match ? match[0] : null; ```` `
Danke! Ein schönes Beispiel zum lernen
ich verstehe weder die erste, noch die zweite Zeile.
Werde mir aber Mühe geben, dass ich es am Ende begreife.
Auch wenn ich oben schon zum Ziel gekommen bin, bin ich für so Beispiel und andere Herangehensweisen einfach dankbar!
-
Sollte auch so gehen:
var quelle = 'Infotext bla bla 4711, 0815 {hier steht der Teil, der mich interessiert (JSON)}'; var match = quelle.match(/{(.*)}/);// Regex var ergebnis = match ? match[0] : null; ```` `
Danke! Ein schönes Beispiel zum lernen
ich verstehe weder die erste, noch die zweite Zeile.
Werde mir aber Mühe geben, dass ich es am Ende begreife.
Auch wenn ich oben schon zum Ziel gekommen bin, bin ich für so Beispiel und andere Herangehensweisen einfach dankbar! `
Ich habe auch ein wenig darber nachdenken müssen, aber es ist eigentlich ganz klar: match sucht zwischen (/ und /) eine Zeichenkette, die mit { anfängt und mit } aufhört. Dazwischen sind nur Reguläre Ausdrücke (Regular Expressions) erlaubt. Der Inhalt wird in ein Array gespeichert.Die letzte Zeile verstehe ich nicht ganz. Ist ja ne If-Anweisung-Kurzschreibweise. Wenn match einen Treffer hat, dann der ersten Wert aus dem Array nehmen, sonst null;
Ich finde das auch sehr gut, wenn solche Beispiele hier gepostet werden. Dadurch kann man sich die unumgänglichen Skripte irgendwann selbst schreiben. Weiter so!
Gruß
Pix
-
` > Ich habe auch ein wenig darber nachdenken müssen, aber es ist eigentlich ganz klar: match sucht zwischen (/ und /) eine Zeichenkette, die mit { anfängt und mit } aufhört. Dazwischen sind nur Reguläre Ausdrücke (Regular Expressions) erlaubt. Der Inhalt wird in ein Array gespeichert.
Die letzte Zeile verstehe ich nicht ganz. Ist ja ne If-Anweisung-Kurzschreibweise. Wenn match einen Treffer hat, dann der ersten Wert aus dem Array nehmen, sonst null;
Ich finde das auch sehr gut, wenn solche Beispiele hier gepostet werden. Dadurch kann man sich die unumgänglichen Skripte irgendwann selbst schreiben. Weiter so!
Gruß
Pix `
Absolut alles richtig beschrieben.Die RegEx sind super mächtig und mittlerweile sogar schneller als (indexOf /indexOf - war selber überrascht).
Wenn man die versteht, dann hat man super Werkzeug zur Verfügung.
P.S.
Person1: - Ich kann fremde Gedanken lesen!
Person2: - Hm… ich kann fremde reguläre Ausdrücke verstehen!
Person1: - Ok. Du hast gewonnen.