palkom: Platzhalter in einer URL ersetzen

hi zusammen,

ich würde gerne platzhalter in einer URL auf einen schlag ersetzen.

beispiel url:

/wwww/_PLATZHALTER1_/_PLATZHALTER2_/_PLATZHALTER3_/_PLATZHALTER4_/

ich gehe bisher so vor:

  
url.replace(/_PLATZHALTER1_/, text1)  
url.replace(/_PLATZHALTER2_/, text2)  
url.replace(/_PLATZHALTER3_/, text3)  
url.replace(/_PLATZHALTER4_/, text4)  

ich würde das ganze aber gern mit einem aufruf erledigen. ist das möglich?

danke für eure hilfe.

gruß

  1. Lieber palkom,

    url.replace(/PLATZHALTER1/, text1)
    url.replace(/PLATZHALTER2/, text2)
    url.replace(/PLATZHALTER3/, text3)
    url.replace(/PLATZHALTER4/, text4)

      
    ich sehe im Moment nur diese Möglichkeit:  
      
    ~~~javascript
    for (i = 1; i < 5; i++) {  
        eval ("url.replace(new Regexp('_PLATZHALTER" + i + "_', 'g'), text" + i + ");");  
    }
    

    Ja, mir ist klar, dass eval evil ist... aber ich hätte auch keine zig Variablen definiert, sondern zumindest ein Array.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo,

      ich hätte auch keine zig Variablen definiert, sondern zumindest ein Array.

      Dann raten wir dem Fragesteller doch lieber diese Lösung:

      var url = "/wwww/_PLATZHALTER1_/_PLATZHALTER2_/_PLATZHALTER3_/_PLATZHALTER4_/";  
      var texte = [  
       undefined, // Position 0 bleibt leer  
       "text1",  
       "text2",  
       "text3",  
       "text4"  
      ];  
      var platzhaltername = "PLATZHALTER";  
      var regexp = new RegExp("_" + platzhaltername + "(\\d+)_", "g");  
        
      function ersetzungsfunktion (treffer, nummer) {  
       return texte[nummer];  
      }  
        
      var url = url.replace(regexp, ersetzungsfunktion);  
      alert(url);
      

      Mathias

      1. n'abend,

        var platzhaltername = "PLATZHALTER";

        var regexp = new RegExp("" + platzhaltername + "(\d+)", "g");
        function ersetzungsfunktion (treffer, nummer) {
        return texte[nummer];
        }
        var url = url.replace(regexp, ersetzungsfunktion);

          
        Wo du gerade [String.replace](http://de.selfhtml.org/javascript/objekte/string.htm) mit Callback-Funktion empfiehlst, fällt mir mal wieder auf, dass die Javascript-Dokumentation eben dieses nicht behandelt. Ohne es zu wissen, würde ich beispielsweise nicht auf die Idee kommen, dass alle "Capure-Blocks" als Argument übergeben werden:  
        ~~~javascript
        var text = 'sss123ttt&%$',  
            pattern = new RegExp( '(\\w+)((\\d{3})([a-z]+))(\\W+)' ),  
            replaceCallback = function( match, buchstaben, dreiZahlenUndKleinbuchstaben, dreiZahlen, kleinBuchstaben, sonderzeichen ){  
              // kompletter gefundener expression-match  
              alert( match );  
              // erster Capture-Block: (\\w+)  
              alert( buchstaben );  
              // zweiter Capture-Block: ((\\d{3})([a-z]+)) -- von außen nach innen  
              alert( dreiZahlenUndKleinbuchstaben );  
              // dritter Capture-Block: (\\d+)  
              alert( dreiZahlen);  
              // vierter Capture-Block: ([a-z]+)  
              alert( kleinBuchstaben );  
              // fünfter Capture-Block: (\\W+)  
              alert( sonderzeichen );  
              // ersetzen durch Rückgabewert  
              return 'ersetzt...';  
            };  
          
        text.replace( pattern, replaceCallback );
        

        Und für die überkandidelten der Hinweis, dass dieser Spaß im IE5 wohl nicht funktioniert...

        weiterhin schönen abend...

        --
        #selfhtml hat ein Forum?
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|