Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen

    This topic has been deleted. Only users with topic management privileges can see it.
    • David G.
      David G. @dslraser last edited by

      @dslraser

      Dann schaue ich nachher mal, ob ich die Funktion finde, wenn man auch in ein bestehendes Script einzelne Teile importieren kann.

      1 Reply Last reply Reply Quote 0
      • David G.
        David G. @dslraser last edited by

        @dslraser

        Habs hinbekommen.
        Die Tabelle von der wir gestern gesprochen habe, habe ich jetzt auch mit dem Pingadapter umgesetzt.
        Der haut immer ein doofes "Alive" vor den Namen.

        Jetzt ist es weg (und kann noch ein wenig Einfluss nehmen).

        1 Reply Last reply Reply Quote 1
        • R
          robson @rantanplan last edited by

          @rantanplan sagte in [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen:

          Hallo

          Manchmal ist es notwendig unliebsame Zeichen aus einem Text zu entfernen um diese z.B. in VIS vernünftig darstellen zu können.
          Mit dem folgenden Blockly kann man jedes Zeichen, ganze Wörter oder eine Folge von Steuerzeichen gegen etwas anderes tauschen.
          Forum_TauscheZeichen.png
          Hier der Export:

          <xml xmlns="http://www.w3.org/1999/xhtml">
            <block type="comment" id="?t^|J^}%io+OnqAwVT4A" x="-237" y="-87">
              <field name="COMMENT">Beliebige Zeichen tauschen</field>
              <next>
                <block type="variables_set" id="-P{_[1=caHEAoB9cP4Qx">
                  <field name="VAR">MeinText</field>
                  <value name="VALUE">
                    <block type="text" id="]-v|)OoSpw-K*Z-|~Z|L">
                      <field name="TEXT">Dieser Text müßte geändert werden</field>
                    </block>
                  </value>
                  <next>
                    <block type="controls_if" id="eO-Yu;zv=:r~yJNHR:iS">
                      <value name="IF0">
                        <block type="logic_negate" id="u@28{:]xG=4a9HU}|/v)">
                          <value name="BOOL">
                            <block type="text_isEmpty" id="W-_T.2)lUsLG/Z(5zIQN">
                              <value name="VALUE">
                                <shadow type="text" id="9LrDM?0xYv?MX-(}2OrI">
                                  <field name="TEXT"></field>
                                </shadow>
                                <block type="variables_get" id="B?L(8|(8?-Z7Ao*[F/VM">
                                  <field name="VAR">MeinText</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <statement name="DO0">
                        <block type="variables_set" id="ziw)~y|7*7le5/J*8HC#">
                          <field name="VAR">neuerText</field>
                          <value name="VALUE">
                            <block type="procedures_callreturn" id="ECH/%?YEFylSUOK._8/K">
                              <mutation name="changeText">
                                <arg name="originalText"></arg>
                                <arg name="suchText"></arg>
                                <arg name="tauschText"></arg>
                              </mutation>
                              <value name="ARG0">
                                <block type="variables_get" id="Y(bM=~D[D5v)7a#1{`}`">
                                  <field name="VAR">MeinText</field>
                                </block>
                              </value>
                              <value name="ARG1">
                                <block type="text" id="(iqf|@QE;6:tP0}rbaEj">
                                  <field name="TEXT">ü</field>
                                </block>
                              </value>
                              <value name="ARG2">
                                <block type="text" id="_{HiLh|2|F3|a#[4lCvX">
                                  <field name="TEXT">ue</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="variables_set" id="`vGUP!R!*|3sjY~dZXxZ">
                              <field name="VAR">neuerText</field>
                              <value name="VALUE">
                                <block type="procedures_callreturn" id="rvKR.cz9FhImw~YT8:YY">
                                  <mutation name="changeText">
                                    <arg name="originalText"></arg>
                                    <arg name="suchText"></arg>
                                    <arg name="tauschText"></arg>
                                  </mutation>
                                  <value name="ARG0">
                                    <block type="variables_get" id="4r-=T6yu%Y[}Zn!QhpR/">
                                      <field name="VAR">neuerText</field>
                                    </block>
                                  </value>
                                  <value name="ARG1">
                                    <block type="text" id="mbk@+N`6F_eG)N%Jw|2J">
                                      <field name="TEXT">ä</field>
                                    </block>
                                  </value>
                                  <value name="ARG2">
                                    <block type="text" id="OtGH;LSHf;*t,59fJ)5i">
                                      <field name="TEXT">ae</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <next>
                                <block type="variables_set" id="3+|QU5[xS;U@Qijfuu@7">
                                  <field name="VAR">neuerText</field>
                                  <value name="VALUE">
                                    <block type="procedures_callreturn" id="~C~TrH*=xX3Xl-l@tg#V">
                                      <mutation name="changeText">
                                        <arg name="originalText"></arg>
                                        <arg name="suchText"></arg>
                                        <arg name="tauschText"></arg>
                                      </mutation>
                                      <value name="ARG0">
                                        <block type="variables_get" id=",eH?bND1?H}TimRX_wnz">
                                          <field name="VAR">neuerText</field>
                                        </block>
                                      </value>
                                      <value name="ARG1">
                                        <block type="text" id="6AWuk;A#5~8;jXas31)I">
                                          <field name="TEXT">ß</field>
                                        </block>
                                      </value>
                                      <value name="ARG2">
                                        <block type="text" id="[M[ZL8Y,u8fNWw|eR|g)">
                                          <field name="TEXT">ss</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="debug" id="g8IUrYe_.rei!S6]Mc?a">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="d7HPm]yEeu9+?9HT0u|l">
                                          <field name="TEXT"></field>
                                        </shadow>
                                        <block type="variables_get" id="^/WzSct]9kWQNOvtqOg/">
                                          <field name="VAR">MeinText</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="Hme!w3Ag?_DUH%uRzR)U">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="d7HPm]yEeu9+?9HT0u|l">
                                              <field name="TEXT"></field>
                                            </shadow>
                                            <block type="variables_get" id="`v3q2Xw=qC`r6)o/kUEY">
                                              <field name="VAR">neuerText</field>
                                            </block>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </next>
                </block>
              </next>
            </block>
            <block type="procedures_defreturn" id="*?%n[KG5e1!^tNun#Hj5" x="288" y="-87">
              <mutation>
                <arg name="originalText"></arg>
                <arg name="suchText"></arg>
                <arg name="tauschText"></arg>
              </mutation>
              <field name="NAME">changeText</field>
              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
              <statement name="STACK">
                <block type="variables_set" id="LyZ2%lYW+kfm,4)yV8UN">
                  <field name="VAR">Text</field>
                  <value name="VALUE">
                    <block type="variables_get" id="da5*p]}sO:{{|ZE!nhDe">
                      <field name="VAR">originalText</field>
                    </block>
                  </value>
                  <next>
                    <block type="variables_set" id="yx;qp1@1fC(oiG4c5gZt">
                      <field name="VAR">AnzZeichenSuchtext</field>
                      <value name="VALUE">
                        <block type="text_length" id="Jwz33ARDLc!=8:eDagDD">
                          <value name="VALUE">
                            <shadow type="text" id="RZWm!~Yo4w5)66Gu|Gs_">
                              <field name="TEXT">abc</field>
                            </shadow>
                            <block type="variables_get" id="G2I+np)5qee]q{4)BlN2">
                              <field name="VAR">suchText</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <next>
                        <block type="variables_set" id="eAGK[85W)DRaIaN!oMiH">
                          <field name="VAR">Stelle</field>
                          <value name="VALUE">
                            <block type="text_indexOf" id="/@rj}{;VUCJ8O|28^(Hf">
                              <field name="END">FIRST</field>
                              <value name="VALUE">
                                <block type="variables_get" id="}de%ffO*rIt%j6)99pf3">
                                  <field name="VAR">Text</field>
                                </block>
                              </value>
                              <value name="FIND">
                                <shadow type="text" id="7MprEQxoWq}#3~Xz:32k">
                                  <field name="TEXT">%0D%0A</field>
                                </shadow>
                                <block type="variables_get" id="7)r.X1a~Tee1!dAwZy`!">
                                  <field name="VAR">suchText</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="controls_whileUntil" id="4lR}{f])DWKyjt}.(6cc">
                              <field name="MODE">WHILE</field>
                              <value name="BOOL">
                                <block type="logic_compare" id="e`eUWK6kyOU=[/x]M({`">
                                  <field name="OP">GT</field>
                                  <value name="A">
                                    <block type="variables_get" id="}7HLWRwI(SDg1^@=czoV">
                                      <field name="VAR">Stelle</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="#y,za{r#@s7Ri.U!9v)A">
                                      <field name="NUM">0</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO">
                                <block type="controls_if" id="PM@Su)b1YOhTZo2qPxB]">
                                  <mutation else="1"></mutation>
                                  <value name="IF0">
                                    <block type="logic_compare" id="l,u?h{)Z-u/OozI,.79G">
                                      <field name="OP">EQ</field>
                                      <value name="A">
                                        <block type="variables_get" id="B/K~z.ANK2);I3(uk4Bh">
                                          <field name="VAR">Stelle</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="|3~K:6jrHq7oxz=fL:Yz">
                                          <field name="NUM">1</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="comment" id="uN{|N4-0EabDJqYE0]@#">
                                      <field name="COMMENT">steht am Textanfang</field>
                                      <next>
                                        <block type="variables_set" id="9?Gy,w.t#1pdl^AOxc#Y">
                                          <field name="VAR">Teil_1</field>
                                          <value name="VALUE">
                                            <block type="variables_get" id="h(#=bJ`DU%y/Jd9%HR9I">
                                              <field name="VAR">tauschText</field>
                                            </block>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                  <statement name="ELSE">
                                    <block type="variables_set" id="{R*X,7K)DA^dq/.~KK7{">
                                      <field name="VAR">Teil_1</field>
                                      <value name="VALUE">
                                        <block type="text_getSubstring" id="Img0opt.EB#)RM-bp~hw">
                                          <mutation at1="false" at2="true"></mutation>
                                          <field name="WHERE1">FIRST</field>
                                          <field name="WHERE2">FROM_START</field>
                                          <value name="STRING">
                                            <block type="variables_get" id="A9h*F{tgJR0y[Q0uv7,=">
                                              <field name="VAR">Text</field>
                                            </block>
                                          </value>
                                          <value name="AT2">
                                            <block type="math_arithmetic" id="([5R[:8Ywn-thKN@r:~}">
                                              <field name="OP">MINUS</field>
                                              <value name="A">
                                                <shadow type="math_number" id="u@:!j5WimCjV%fG9hPGs">
                                                  <field name="NUM">1</field>
                                                </shadow>
                                                <block type="variables_get" id="U0qw,~,2KoaAc37UO{l#">
                                                  <field name="VAR">Stelle</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <shadow type="math_number" id="DT#zRSRu1.y^|5Z#G37W">
                                                  <field name="NUM">1</field>
                                                </shadow>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                    </block>
                                  </statement>
                                  <next>
                                    <block type="variables_set" id="Else^,?QE9TTS.Y%K]W=">
                                      <field name="VAR">Teil_2</field>
                                      <value name="VALUE">
                                        <block type="text_getSubstring" id="e8A7NqY7O!@K(aFlMpV#" inline="false">
                                          <mutation at1="true" at2="false"></mutation>
                                          <field name="WHERE1">FROM_START</field>
                                          <field name="WHERE2">LAST</field>
                                          <value name="STRING">
                                            <block type="variables_get" id="|jU0g8+eIgwn_|IB56)@">
                                              <field name="VAR">Text</field>
                                            </block>
                                          </value>
                                          <value name="AT1">
                                            <block type="math_arithmetic" id="F#*%;R9ugmwaaas?WBwG">
                                              <field name="OP">ADD</field>
                                              <value name="A">
                                                <shadow type="math_number" id="8/I%=/~YReHV]Iwo{}(J">
                                                  <field name="NUM">1</field>
                                                </shadow>
                                                <block type="variables_get" id="R0|a}kx2M~SYjPKS5Cc{">
                                                  <field name="VAR">Stelle</field>
                                                </block>
                                              </value>
                                              <value name="B">
                                                <shadow type="math_number" id=";Q(aJ::90?0?H;-45cgS">
                                                  <field name="NUM">0</field>
                                                </shadow>
                                                <block type="variables_get" id="dY33=1IVxkrSH1k1#X6A">
                                                  <field name="VAR">AnzZeichenSuchtext</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="variables_set" id="OcJS!-Ku1vQY4)I+r,gc">
                                          <field name="VAR">Text</field>
                                          <value name="VALUE">
                                            <block type="text_join" id="%%D@nUqB1tt^`?qrUahx">
                                              <mutation items="3"></mutation>
                                              <value name="ADD0">
                                                <block type="variables_get" id="q]l%0Dpb89BZy1-m[TjM">
                                                  <field name="VAR">Teil_1</field>
                                                </block>
                                              </value>
                                              <value name="ADD1">
                                                <block type="variables_get" id="f~POFU0}K4-w]xVc1?,`">
                                                  <field name="VAR">tauschText</field>
                                                </block>
                                              </value>
                                              <value name="ADD2">
                                                <block type="variables_get" id="U77~u,Qfmb2g[O19eHoh">
                                                  <field name="VAR">Teil_2</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="variables_set" id="lao?KUxF77Si~Xc2j%^{">
                                              <field name="VAR">Stelle</field>
                                              <value name="VALUE">
                                                <block type="text_indexOf" id="[),PN,ZrAW,C/~:K[x[:">
                                                  <field name="END">FIRST</field>
                                                  <value name="VALUE">
                                                    <block type="variables_get" id="6{t:BeVh6=bsQF(zUhYG">
                                                      <field name="VAR">Text</field>
                                                    </block>
                                                  </value>
                                                  <value name="FIND">
                                                    <shadow type="text" id="{Vd/Su8uk@lo|:3KMi1L">
                                                      <field name="TEXT">%0D%0A</field>
                                                    </shadow>
                                                    <block type="variables_get" id="r|~fKkGR#@1@G6_GX`-g">
                                                      <field name="VAR">suchText</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
              <value name="RETURN">
                <block type="variables_get" id=".*DA-:q/GzURSEPH2ZiQ">
                  <field name="VAR">Text</field>
                </block>
              </value>
            </block>
          </xml>
          

          Bei Fragen, fragen.

          Grüße

          Hi @rantanplan ,
          danke für deine Vorlage.

          Ich hatte bei Nutzung nun aber das Problem, dass das erste Zeichen im String dupliziert getauscht wird.
          Bsp: Im String "Wurst" soll das "W" durch ein "D" getauscht werden. Anstatt "Durst" gibt mir das Skript "DDurst" aus.

          Das liegt mMn an folgender Funktion:
          8707825d-500a-4368-8c40-ea4c82daff7f-image.png

          Da "Teil_1" und "tauschText" identisch sind, werden diese hintereinander geschrieben.

          Ich habe dies mit einer einfachen Prüfung behoben.
          b7ef10e1-ab66-4091-a8f7-e4de58d95292-image.png
          Falls "Teil_1" und "tauschtext" identisch sind, dann erstelle Text aus "Teil_1" und Teil_2".
          Falls sie nicht identisch sind, dann erstelle Text aus "Teil_1", "tauschtext" und "Teil_2".

          Ich hoffe, dass hilft dem ein oder anderen.

          rantanplan 1 Reply Last reply Reply Quote 0
          • rantanplan
            rantanplan @robson last edited by

            @robson Danke für die Info.
            Da hast Du aber nach langer, langer, langer Zeit einen Bug gefunden😁

            Habe das Blockly geändert und im ersten Post neu hinterlegt.
            Hier die Änderung.
            Zeichentausch2.png

            Grüße

            R N 2 Replies Last reply Reply Quote 0
            • R
              robson @rantanplan last edited by robson

              @rantanplan sagte in [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen:

              @robson Danke für die Info.
              Da hast Du aber nach langer, langer, langer Zeit einen Bug gefunden😁

              Sehe es als Kompliment für dich und dein Skript an 😉

              1 Reply Last reply Reply Quote 0
              • N
                newBroker @rantanplan last edited by

                Moin zusammen,

                sagt mal wird der "rechte" Abschnitt benötigt?
                was macht er in dem Skript?

                Beste Grüße

                David G. 1 Reply Last reply Reply Quote 0
                • David G.
                  David G. @newBroker last edited by

                  @newbroker

                  Ja,

                  wird benötigt.
                  Da steckt die haupt Funktion und Logik vom Skript drinnen.
                  Darauf greift der linke Teil während der Verarbeitung zu.

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    newBroker @David G. last edited by

                    @david-g

                    Dankeschön 🙂

                    1 Reply Last reply Reply Quote 0
                    • jahnbes
                      jahnbes @rantanplan last edited by

                      @rantanplan

                      Danke, hat mir sehr geholfen!

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        RandyAndy @jahnbes last edited by

                        Hi,

                        ich finde das Skript ja cool und hätte es wahrscheinlich nicht hinbekommen. Da hat jemand richtig Arbeit reingesteckt.
                        Ich habe mich auch schon geärgert, dass das nicht im Blockly abgebildet ist, insb. da Javascript das als Boardmittel mitbringt (wie eigentlich jede Programmiersprache).

                        Hier mal ein Link wie ich das gemacht habe:
                        https://forum.iobroker.net/topic/47645/replace-funktion-in-blockly?_=1637252488203

                        Vielleicht auch ein Ansatz für den ein oder anderen

                        Andreas

                        rantanplan 1 Reply Last reply Reply Quote 0
                        • rantanplan
                          rantanplan @RandyAndy last edited by rantanplan

                          @randyandy sagte in [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen:

                          Hi,

                          ich finde das Skript ja cool und hätte es wahrscheinlich nicht hinbekommen. Da hat jemand richtig Arbeit reingesteckt.
                          Ich habe mich auch schon geärgert, dass das nicht im Blockly abgebildet ist, insb. da Javascript das als Boardmittel mitbringt (wie eigentlich jede Programmiersprache).

                          Ist schon einige Zeit her. Damals gab es noch keinen Js-Block.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            RandyAndy @rantanplan last edited by RandyAndy

                            @rantanplan

                            Alles gut, wie gesagt finde es ja cool das man es überhaupt mit Blockly programmiert bekommt. Keine Frage: Hut ab für das Skript.
                            Und vielleicht braucht man (hoffentlich) irgendwann meine Krücke auch nicht mehr. Eigentlich gehört dies Funktion ins Blockly, alles andere ist Murks.

                            Andreas

                            rantanplan 1 Reply Last reply Reply Quote 0
                            • rantanplan
                              rantanplan @RandyAndy last edited by

                              @randyandy sagte in [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen:

                              @rantanplan
                              Und vielleicht braucht man (hoffentlich) irgendwann meine Krücke auch nicht mehr. Eigentlich gehört dies Funktion ins Blockly, alles andere ist Murks.

                              Andreas

                              Alles gut. Bin ganz Deiner Meinung.
                              Ist aber leider so, dass hier Blockly ganz, ganz,.... zuletzt kommt.

                              Grüße

                              1 Reply Last reply Reply Quote 0
                              • David G.
                                David G. last edited by David G.

                                Hallo,

                                ich habe glaube noch einen Bug im Skript gefunden.

                                Ich habe einen Text wo nach dem Komma die Leerstellen fehlen (Wird so von einem Adapter geliefert.).

                                Habe mir also gedacht ich suche nach "," und ersetze es mit ", ".

                                Leider führt dieser Vorgang zum Absturz der Javascript Instanz.

                                rantanplan 1 Reply Last reply Reply Quote 0
                                • rantanplan
                                  rantanplan @David G. last edited by

                                  @david-g sagte in [Vorlage] Blockly - Beliebiges Zeichen im Text tauschen:

                                  Hallo,

                                  ich habe glaube noch einen Bug im Skript gefunden.

                                  Ich habe einen Text wo nach dem Komma die Leerstellen fehlen (Wird so von einem Adapter geliefert.).

                                  Habe mir also gedacht ich suche nach "," und ersetze es mit ", ".

                                  Leider führt dieser Vorgang zum Absturz der Javascript Instanz.

                                  Hallo

                                  Damit generierst Du eine Endlosschleife!!!
                                  Der Text wird bei jedem Durchgang immer von vorne bis hinten durchsucht.
                                  Suche "," und tausche mit ", " findet somit kein Endeund dann steigt die Instanz irgendwann aus.

                                  Tausche das Komma zuerst mit einem Semikolon und dann das Semikolon durch ", ".

                                  David G. 1 Reply Last reply Reply Quote 1
                                  • David G.
                                    David G. @rantanplan last edited by

                                    @rantanplan

                                    Das klingt irgendwie logisch.... 🤣

                                    1 Reply Last reply Reply Quote 0
                                    • R
                                      RkcCorian @rantanplan last edited by

                                      @rantanplan Super, danke! Hab genau sowas gesucht. 🙂

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      982
                                      Online

                                      31.6k
                                      Users

                                      79.6k
                                      Topics

                                      1.3m
                                      Posts

                                      blockly template
                                      13
                                      70
                                      11295
                                      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