Micha: Ersetz-script

Hallo,
Ich würde gern ein scipt machen, man gibt in ein Textfeld etwas ein, und das script soll dann alles zu anderen zeichen machen, also nicht wie z.B. bei google translation sondern jeder einelne Buchstabe gegen ein oder 32 andere Zeichen...

Jemand ne Idee wie man das machen könnte?

  1. Hallo,

    Ich würde gern ein scipt machen, man gibt in ein Textfeld etwas ein, und das script soll dann alles zu anderen zeichen machen, also nicht wie z.B. bei google translation sondern jeder einelne Buchstabe gegen ein oder 32 andere Zeichen...

    Jemand ne Idee wie man das machen könnte?

    http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace()

    mfg. Daniel

  2. Hi,

    Ich würde gern ein scipt machen, man gibt in ein Textfeld etwas ein, und das script soll dann alles zu anderen zeichen machen, also nicht wie z.B. bei google translation sondern jeder einelne Buchstabe gegen ein oder 32 andere Zeichen...

    Jemand ne Idee wie man das machen könnte?

    Ich weiß nicht, ob es die einfachste lösung ist, aber ich würde es so machen:

    • ein Array mit allen Zeichen, die du ersetzen willst (zeichenArr)
    • ein zweites Array, mit den Werten, die statt den einzelnen Buchstaben geschrieben werden sollen (refArr)
    • den Inhalt der Textarea mit http://de.selfhtml.org/javascript/objekte/string.htm#split@split() zeichenweise in ein weiteres Array lesen (textArr)
    • textArr in einer for-Schleife zeichenweise durchlaufen
    • suchen an welcher Stelle (zIndex) von zeichenArr das aktuelle Zeichen steht und mit dem Wert von refArr[zIndex] austauschen, falls das Zeichen in zeichenArr vorhanden ist.

    Hoffe ich habe mich einigermaßen verständlich ausgedrückt. Wenn nicht einfach nochmal nachfragen.

    mfG,
    steckl

  3. gudn tach!

    Ich würde gern ein scipt machen, man gibt in ein Textfeld etwas ein, und das script soll dann alles zu anderen zeichen machen, also nicht wie z.B. bei google translation sondern jeder einelne Buchstabe gegen ein oder 32 andere Zeichen...

    eine moeglichkeit waere sowas:

      
    trans = new Object();  
    trans["a"] = "x"; // a soll durch x ersetzt werden usw.  
    trans["b"] = "y";  
    trans["c"] = "z";  
    "aabcdbac".replace(/./gs, function(c){  
        return trans[c] ? trans[c] : c;  
      });
    

    das sollte alle zeichen ersetzen, fuer die eine transliterationsvorschrift definiert wurde.
    mein javascript ist allerdings etwas eingerostet. ich weiss nicht, ob der code "sauber" ist.

    erst hatte ich es mit
      replace(/(.)/g, trans["$1"]);
    versucht, aber leider wurde hier $1 anscheinend nicht aufgeloest oder so.

    ah, soeben habe ich steckls posting gesehen. dazu hilft dir vielleicht der code von diesem rot13-codierer weiter

    prost
    seth

    1.   
      trans = new Object();  
      trans["a"] = "x"; // a soll durch x ersetzt werden usw.  
      trans["b"] = "y";  
      trans["c"] = "z";  
      "aabcdbac".replace(/./gs, function(c){  
          return trans[c] ? trans[c] : c;  
        });  
      
      

      Das gefällt mir schon ganz gut, ich habe es mal versucht...Allerdings hat es nicht so ganz geklappt...
      kann mir jemand sagen was hieran falsch ist? Danke

      [CODE lang=html]
      <html><head>
      <script type="text/javascript">
      function Konvert()
      trans = new Object();
      trans["a"] = "4";
      trans["b"] = "8";
      trans["c"] = "|";
      trans["d"] = "1st";
      trans["e"] = "3";
      trans["f"] = "2nd";
      trans["g"] = "6";
      trans["h"] = "|-|";
      trans["i"] = "1";
      trans["j"] = "3rd";
      trans["k"] = "|<";
      trans["l"] = "|_";
      trans["m"] = "|/|";
      trans["n"] = "||";
      trans["o"] = "0";
      trans["p"] = "4th";
      trans["q"] = "5th";
      trans["r"] = "|2";
      trans["s"] = "5";
      trans["t"] = "7";
      trans["u"] = "|_|";
      trans["v"] = "/";
      trans["w"] = "//";
      trans["x"] = "><";
      trans["y"] = "9";
      trans["z"] = "2";
      "aabcdbac".replace(/./gs, function(c){
          return trans[c] ? trans[c] : c;
        });
      </script></head><body>
      <form>
      <textarea name="Text" rows=10 cols=80 wrap=soft>Tastatur oder Zwischenablage</textarea><br>
      <input type=button value="|<0||/3|27!" onClick="Konvert(this)">
      </form>
      </form></div></body></html>
      [/CODE]

      1. Hallo Micha,

        Das gefällt mir schon ganz gut, ich habe es mal versucht...Allerdings hat es nicht so ganz geklappt...
        kann mir jemand sagen was hieran falsch ist? Danke

        was meinst Du mit "hat es nicht so ganz geklappt"?

        function Konvert()

        Funktion ohne Übergabeparameter;

        ...
        "aabcdbac".replace(/./gs, function(c){
            return trans[c] ? trans[c] : c;
          });

        hier wird das Ersetzen auf den String "aabcdbac" angewendet. Willst Du das wirklich?

        <textarea name="Text" rows=10 cols=80 wrap=soft>Tastatur oder Zwischenablage</textarea><br>
        <input type=button value="|<0||/3|27!" onClick="Konvert(this)">

        Hier rufst Du Konvert mit Übergabeparameter auf.

        Wo steht denn der Text, der teilweise ersetzt werden soll? Übergib den Text an Konvert und in Konvert wende das Ersetzen auf diesen Text an:

        Konvert(str)
        ...
        str.replace ...

        Gruß, Jürgen

      2. gudn tach!

        ich habe offensichtlich zuviel kenntnisse in javascript vorausgesetzt.

        lies dir in selfhtml mal die grundlegenden kapitel zu javascript durch, auch im bezug auf objektorientierung, um zu verstehen, was der von mir gepostete code ueberhaupt bedeutet.

        z.b. waere
          "aabcdbac".replace(/./gs, ...);
        in etwa das gleiche wie
          string_variable = "aabcdbac";
          string_variable.replace(/./gs, ...);
        es ginge also noch ueberhaupt nicht ein etwaiger als parameter uebergebener text mit ein.
        zudem hast du anscheinend missverstanden, was diese function innerhalb des replace-aufrufs macht. ist dir der ternaere operator bekannt? (falls nicht, frag mal google danach.) weiterhin hast du afais die ersetzung "falschherum" anwenden wollen. beachte meinen kommentar zum code in meinem ersten antwortposting.
        du muesstest also die ersetzungen rumdrehen. ausserdem willst offensichtlich nicht nur jeweils genau ein zeichen durch genau ein anderes ersetzen. eben dies tut aber der von mir gepostete code.

        und obendrein gibt es ein weiteres problem, was anhand der drei zeilen

        trans["c"] = "|";
        trans["r"] = "|2";
        trans["z"] = "2";

        deutlich wird. wenn irgendwo im text "|2" vorkommt, muss eine regel festgelegt werden, welche entscheidet, ob das nun zu "r" oder "cz" werden soll.

        prost
        seth

      3. Hi,

        <script type="text/javascript">
        function Konvert()
        trans = new Object();

        Da fehlt die öffnende Klammer.

        "aabcdbac".replace(/./gs, function(c){
            return trans[c] ? trans[c] : c;
          });

        Hier wird für den String eine Ersetzung durchgeführt, das Ergebnis aber weggeschmissen.
        Im Endeffekt wird also nur CPU-Zeit verbraten.

        </script>

        Die schließende Klammer für die Funktion Konvert fehlt auch.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.