Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Replace Funktion in Blockly

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Replace Funktion in Blockly

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Martin-72 last edited by mickym

      @martin-72 Ich verstehe Euch nicht - das sind alles JSON Strings bzw. Objekte - da mache ich keine Stringmanipulationen.
      Ausgangspunkt ist ein Objekt - das Attribut xy enthält Deinen String mit den 2 Werten. Diese kann ich über eine Split Funktion - gibts sicher im Blockly in ein Array überführt werden.

      Beschäftigt Euch doch lieber mit Datenformaten bevor Ihr Strings manipuliert.

      16f6924b-e01f-495d-bc16-45f7e73b016a-image.png

      let obj = {"transitiontime":0,"xy":"0.16352201257861634,0.1392405063291139"};
      obj = obj.xy;
      obj = obj.split(",");
      
      R 1 Reply Last reply Reply Quote 0
      • R
        Rushmed Most Active @mickym last edited by Rushmed

        @mickym Klingt interessant, wie kann ich besser als oben gezeigt Sonder und Leerzeichen in eine lesbare Form bringen?

        Ä	Lateinischer Großbuchstabe Umlaut A	        %C3%84	
        Ö	Lateinischer Großbuchstabe Umlaut O	        %C3%96	
        Ü	Lateinischer Großbuchstabe Umlaut U	        %C3%9C	
        ß	Lateinischer Kleinbuchstabe Scharfes s	        %C3%9F
        ä	Lateinischer Kleinbuchstabe Umlaut a	        %C3%A4
        ö	Lateinischer Kleinbuchstabe Umlaut o	        %C3%B6
        ü	Lateinischer Kleinbuchstabe Umlaut u	        %C3%BC	
        ẞ	Lateinischer Großbuchstabe Scharfes S[1]	%E1%BA%9E
                Leerzeichen                                     %20
        
        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Rushmed last edited by mickym

          @rushmed sagte in Replace Funktion in Blockly:

          Dafür gibt es auch ein JS function - wie Du das in Blockly einbindest weiß ich nicht weil ich das nicht nutze:

          decodeURI("%C3%84");
          

          d11df7e4-3269-4aaf-905a-ad0cbc04e434-image.png

          Also einfach Dein String der URL der decoodeURI() Funktion übergeben.

          https://www.w3schools.com/jsref/jsref_decodeuri.asp

          decodeURI("%C3%84\n\
          %C3%96\n\
          %C3%9C\n\
          %C3%9F\n\
          %C3%A4\n\
          %C3%B6\n\
          %C3%BC\n\
          %E1%BA%9E\n\
          Leerzeichen -%20-"
          );
          

          545ca7ea-1d34-4e7f-9f59-23adaa3ecec3-image.png

          Also einfach den ganzen Text - String decodeURI übergeben und die Sonderzeichen werden ersetzt.

          R 1 Reply Last reply Reply Quote 0
          • R
            Rushmed Most Active @mickym last edited by Rushmed

            @mickym Wenn ich jetzt mit:

            let str_1 = Eingabe;
            str_1 = str_1.decodeURI(Eingabe);
            return str_1;
            

            und
            f7bf7bfa-35ca-498a-bfec-668d502a8942-grafik.png
            probiere erhalte ich:

            21:04:17.905	error	javascript.0 (19856) script.js.Alexa_Handy_Benachrichtigungen: TypeError: str_1.decodeURI is not a function
            21:04:17.906	error	javascript.0 (19856) at DecodeURI (script.js.Alexa_Handy_Benachrichtigungen:15:19)
            21:04:17.906	error	javascript.0 (19856) at script.js.Alexa_Handy_Benachrichtigungen:69:19
            21:04:17.906	error	javascript.0 (19856) at script.js.Alexa_Handy_Benachrichtigungen:73:3
            
            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @Rushmed last edited by

              @rushmed

              Du musst eine richtige Funktion definieren - wie gesagt bin kein Blockly spezi:

              function decode(Eingabe){
                  return decodeURI(Eingabe);
              }
              

              So ich habe mal die function decode genannt.

              1 Reply Last reply Reply Quote 0
              • R
                Rushmed Most Active last edited by Rushmed

                @mickym Damit kommt zumindest undefined zurück.
                Warum war in´m ersten Post dieses Freds die Definition einer Funktion nicht notwendig?

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Rushmed last edited by mickym

                  @rushmed sagte in Replace Funktion in Blockly:

                  @mickym Damit kommt zumindest undefined zurück.

                  Ich probier das auch gerade mit Blockly - kenn mich da aber nicht aus. Probiere es gerade so:

                  return decodeURI(Eingabe);
                  
                  R 1 Reply Last reply Reply Quote 1
                  • R
                    Rushmed Most Active @mickym last edited by Rushmed

                    @mickym Sensationell, das sieht schonmal gut aus.

                    Danke.

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Rushmed last edited by

                      @rushmed sagte in Replace Funktion in Blockly:

                      @mickym Sensationell, das sieht schonmal gut aus.

                      Danke.

                      Na ich glaub ich hab das auch nun kapiert mit dem Blockly:

                      41cad485-b55b-4649-8738-ad981102d160-image.png

                      Aber ich finde es doch umständlich. Wird nicht mein Tool. 😉

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        Rushmed Most Active @mickym last edited by

                        @mickym So richtig klappts noch nicht.
                        Ich bekomme bspw. diesen String:

                        %E2%81%A8Prinzessin%E2%81%A9.Hey%20yo.%evtprm4.%evtprm5.%E2%81%A8Prinzessin%E2%81%A9
                        

                        und das Script sagt mir:

                        
                        21:48:05.317	error	javascript.0 (19856) script.js.Alexa_Handy_Benachrichtigungen: URIError: URI malformed
                        
                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Rushmed last edited by mickym

                          @rushmed Ja dann stimmt was an dem String nicht. Der Fehler kommt nur wenn was nicht klar ist. Die %ev mag er nicht!
                          Wenn man die % aus dem %ev raus macht geht es.
                          Sonst versucht das Teil das halt zu %ev interpretieren und ev ist nun mal kein HEX Wert

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            Rushmed Most Active @mickym last edited by

                            @mickym Ok, danke. Ich probier da morgen nochmal rum.

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Rushmed last edited by mickym

                              @rushmed sagte in Replace Funktion in Blockly:

                              @mickym Ok, danke. Ich probier da morgen nochmal rum.

                              Nun wie gesagt - weiss nicht woher der String ist - aber natürlich wird ein % im HTML immer codiert - wenn ich im originalen Text ein % vorhanden war - dann muss es auch richtig codiert werden.

                              Falls also die % Zeichen Bestandteil des Strings sein sollen, dann muss der String so heißen:

                              %E2%81%A8Prinzessin%E2%81%A9.Hey%20yo.%25evtprm4.%25evtprm5.%E2%81%A8Prinzessin%E2%81%A9
                              

                              Dann kommt das auch fehlerfrei raus:

                              2f0bce68-0b0b-436c-92bd-0d9f93589b67-image.png

                              Wenn Du solche Texte im Original hast - dann musst Du die halt umgekehrt richtig codieren lassen. Es gibt ja auch die Codierfunktion also encodeURI()

                              af9c29f8-24fc-4bd2-9f47-6a54d47627e4-image.png

                              Also einen String nur teilweise codieren bzw. decodieren funktioniert nicht - entweder konsequent alles oder sonst nichts. Sonst musst halt wieder mit Stringfunktionen arbeiten.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              780
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              blockly javascript
                              5
                              24
                              3194
                              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