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 goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [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

      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

                                    421
                                    Online

                                    31.6k
                                    Users

                                    79.5k
                                    Topics

                                    1.3m
                                    Posts

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