farant: 4 replace zusammenfassen

Hallo Forumsmitglieder

Ich habe einen Regulären Ausdruck um übergebenen Unicode zu ersetzen. Besser gesagt ich habe 4 davon...
var findw  = findw.replace(/%F6/, "ö"); // ersetze ö
var findw  = findw.replace(/%E4/, "ä"); // ersetze ä
var findw  = findw.replace(/%FC/, "ü"); // ersetze ü
var findw  = findw.replace(/%DF/, "ß"); // ersetze ß

gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.
Ich hoffe nämlich dass sich dann damit mein IE-Problem beheben lässt; im IE wird nur der erste replace ausgeführt - in Opera und Firefox funktioniert es bei allen 4en.

Vielen Dank für eure Hilfe

Farant

  1. Hallo,

    Ich habe einen Regulären Ausdruck um übergebenen Unicode zu ersetzen. Besser gesagt ich habe 4 davon...
    var findw  = findw.replace(/%F6/, "ö"); // ersetze ö
    var findw  = findw.replace(/%E4/, "ä"); // ersetze ä
    var findw  = findw.replace(/%FC/, "ü"); // ersetze ü
    var findw  = findw.replace(/%DF/, "ß"); // ersetze ß

    Warum deklarierst Du die Variable findw immer wieder neu? Das var gehört nur vor die erste Deklaration.

    gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.

    Soweit ich weiß, nein.

    Ich hoffe nämlich dass sich dann damit mein IE-Problem beheben lässt; im IE wird nur der erste replace ausgeführt - in Opera und Firefox funktioniert es bei allen 4en.

    Hm, kann ich nicht bestätigen. Oder meinst Du, dass immer nur das erste %F6, %E4, %FC, %DF ersetzt wird? Das liegt aber daran, dass Dein regulärer Ausdruck mehr nicht abdeckt. Siehe http://de.selfhtml.org/javascript/objekte/regexp.htm#allgemeines - Syntax regulärer Ausdrücke -
    /.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert

    Beispiel:

      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
            "http://www.w3.org/TR/html4/strict.dtd">  
    <html>  
    <head>  
    <title>Titel</title>  
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
    <script type="text/javascript">  
    <!--  
    window.onload = function() {  
      
     var myMonitor = document.getElementById("monitor");  
      
     var findw = "D%F6s (da%DF) %FCst ein T%E4st m%FCt Uml%E4uten."  
     myMonitor.innerHTML = findw + "<br>";  
      
     var findw  = findw.replace(/%F6/g, "&#246;"); // ersetze ö  
     findw  = findw.replace(/%E4/g, "&#228;"); // ersetze ä  
     findw  = findw.replace(/%FC/g, "&#252;"); // ersetze ü  
     findw  = findw.replace(/%DF/g, "&#223;"); // ersetze ß  
      
     myMonitor.innerHTML += findw + "<br>";  
      
    };  
    //-->  
    </script>  
    </head>  
    <body>  
    <div id="monitor">&nbsp;</div>  
    </body>  
    </html>  
    
    

    viele Grüße

    Axel

    1. Lieber Axel,

      eine kleine Ergänzung...

      /.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert

      Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Hallo Felix,

        /.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert

        Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.

        hast Du seit Deinem Flash-Einbindproblem nicht mehr weiter recherchiert? Ich hab's jedenfalls nicht getan - und wäre wie Du froh, Genaueres über die  Auswirkung des Modifiers m zu wissen.

        Freundliche Grüße

        Vinzenz

        1. Hallo,

          /.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert

          Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.

          Nein. Das Suchmuster /%E4/ muss keine Zeilenumbrüche ignorieren. Es beinhaltet ja keine, sondern sucht nur nach der Zeichenfolge %E4.

          Ich hab's jedenfalls nicht getan - und wäre wie Du froh, Genaueres über die  Auswirkung des Modifiers m zu wissen.

          Er tut das, was s.oliver scheibt. Er sorgt dafür, dass man in Strings, die Zeilenumbrüche enthalten, mit ^(Zeilenanfang) und $(Zeilenende) nach einzelnen Zeilen suchen kann.

          Beispiel:

            
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
                  "http://www.w3.org/TR/html4/strict.dtd">  
          <html>  
          <head>  
          <title>Titel</title>  
          <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
          <script type="text/javascript">  
          <!--  
          window.onload = function() {  
            
           var myMonitor = document.getElementById("monitor");  
            
           var findw = "Das \nist \nein\n Test. So \nein\n Quatsch!"  
           //var findw = document.getElementsByTagName("P")[0].innerHTML;  
           //var findw = document.getElementsByTagName("P")[0].firstChild.nodeValue;  
           myMonitor.value = findw;  
            
           //Wir suchen ein allein in der Zeile stehendes "ein"  
           alert(findw.match(/^ein$/mg));  
          };  
          //-->  
          </script>  
          </head>  
          <body>  
          <textarea rows="10" cols="50" id="monitor"></textarea>  
          <p>Das  
          ist  
          ein  
           Test. So  
          ein  
           Quatsch!</p>  
          </body>  
          </html>  
          
          

          Das Problem ist, dass im IE weder in [ElementNode].innerHTML noch in [TextNode].nodeValue zeilenumbrüche enthalten sind.

          viele Grüße

          Axel

          1. Lieber Axel,

            Er tut das, was s.oliver scheibt. Er sorgt dafür, dass man in Strings, die Zeilenumbrüche enthalten, mit ^(Zeilenanfang) und $(Zeilenende) nach einzelnen Zeilen suchen kann.

            endlich hab auch ich's kapiert! Vielen Dank (und ein fettes "fachlich hilfreich")!

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

      2. Servus,

        Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster

        auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach
        sollte da nicht nur "g", sondern sogar "mg" stehen.

        der Parameter 'm' sorgt eigentlich nur dafür, dass die Textmarken '^'
        und '$' neben dem eigentlichen Anfang und Ende des Strings, auch nach
        bzw. vor eventuellen Zeilenumbrüchen im String ansetzen - er ist für
        dieses Beispiel also ohne Belang.

        Grüsse

        1. Lieber s.oliver,

          vielen Dank für Deine Erläuterungen. Es sollte aber erst Axel gelingen, dass ich kapiere, was Du mir da sagen willst... :-/ Bin halt momentan net so schnell im Hirn, was vielleicht (passende Ausrede ist immer gut) an meinem mehr als sonst vergrützten Kopf liegen mag.

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

          1. Servus,

            vielen Dank für Deine Erläuterungen. Es sollte aber erst Axel

            gelingen, dass ich kapiere, was Du mir da sagen willst...

            tut mir leid, ich versuche mich bei der nächsten Gelegenheit klarer
            auszudrücken. Davon einmal abgesehen, bin ich schon zufrieden, wenn
            überhaupt eine Reaktion erfolgt. ;)

            Grüsse

  2. Hallo farant,

    durch das Schlüsselwort var deklarierst Du Deine Variable auch immer wieder neu und überschreibst somit dessen alten Wert.

    gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.

    Du könntest dazu eine Funktion nutzen, nach diesem Prinzip:

      
      function replaceUmlauts(string){  
          var Ar = new Array(2);  
          Ar[0] = new Array("Ö", "ö", "Ä", "ä", "Ü", "ü", "ß");  
          Ar[1] = new Array("&Ouml;", "&ouml;", "&Auml;", "&auml;", "&Uuml;", "&uuml;", "&szlig;");  
      
          for (var i=0; i<Ar[0].length; i++){  
        myRegExp = new RegExp(Ar[0][i],"g");  
        string = string.replace(myRegExp, Ar[1][i]);  
       }  
          return string;  
      }  
      alert(replaceUmlauts("äüß"));
    

    Letztlich sieht es aber ehr so aus, als suchst Du decodeURI()

    Mit freundlichem Gruß
    Micha

    --
    LeagueEditor JavaScript kostenlose Ligaverwaltung || richtig Messen will gelernt sein