Mathias Brodala: Ersetzen mit Array

Beitrag lesen

Hallo Max.

for(var i=0; i<key.length; i++) {
        text = text.replace(key[i], replaceStrings[i]);
    }

damit funktioniert es, allerdings nur EINMALIG. Wenn "string1" mehrmals im Text vorkommt, wird nur das erste Vorkommen ersetzt. Was kann ich da machen?

So zum Beispiel:

function js_str_replace(mix1, mix2, str) {  
  
  // Wenn die ersten beiden Argumente Arrays sind …  
  if (typeof(mix1) == 'object' && mix1.length &&  
      typeof(mix2) == 'object' && mix2.length) {  
  
    // … und beide gleich viele Elemente enthalten …  
    if (mix1.length == mix2.length) {  
  
      for (var i = 0; i < mix1.length; ++i) {  
  
        // … sämtliche Vorkommen global ersetzen …  
        str = str.replace(new RegExp(mix1[i], 'g'), mix2[i]);  
  
      }  
  
      // … und Resultat zurückgeben.  
      return str;  
  
    } else {  
  
      // Mit einer ungleichen Anzahl kann nicht gearbeitet werden.  
      return false;  
  
    }  
  
  }  
  
  // Ansonsten global ersetzen  
  return (str = str.replace(new RegExp(mix1, 'g'), mix2));  
  
}  
  
var from = ['string1', 'string2', 'string3'];  
var to = ['ersatz1', 'ersatz2', 'ersatz3'];  
  
alert(js_str_replace(from, to, 'string1 string3 string2, string3string2')); // ersatz1 ersatz3 ersatz2, ersatz3ersatz2

Einen schönen Mittwoch noch.

Gruß, Mathias

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]