Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. (OK) Frage: String alle Zeichen bis zur ersten { löschen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    332

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

(OK) Frage: String alle Zeichen bis zur ersten { löschen

Scheduled Pinned Locked Moved JavaScript
8 Posts 3 Posters 3.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    wrote on last edited by
    #1

    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.

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Reply Last reply
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      wrote on last edited by
      #2

      Kleiner Nachtrag noch: Sollte eine Meldung direkt mit der geschweiften Klammer beginnen, dann soll sich am String nichts ändern.

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Reply Last reply
      0
      • P Offline
        P Offline
        pix
        wrote on last edited by
        #3

        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.

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Reply Last reply
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          wrote on last edited by
          #4

          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

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Reply Last reply
          0
          • BluefoxB Offline
            BluefoxB Offline
            Bluefox
            wrote on last edited by
            #5

            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;
            
            
            1 Reply Last reply
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              wrote on last edited by
              #6

              @Bluefox:

              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!

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Reply Last reply
              0
              • P Offline
                P Offline
                pix
                wrote on last edited by
                #7

                @ruhr70:

                @Bluefox:

                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

                ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                1 Reply Last reply
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  wrote on last edited by
                  #8

                  ` > 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.

                  1 Reply Last reply
                  0
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  634

                  Online

                  32.7k

                  Users

                  82.5k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe