Problem mit replace()

gamerfunkie

Erfahrenes Mitglied
Hallo,

Ich möchte den String 'content' nach dem String 'search' durchsuchen und alle vorkommen von 'search' in 'content' löschen. Also theoretisch:

Code:
content = content.replace(new RegExp(search,"g"), " ");

problem ist aber, das meine variable search ein paar viel sonderzeichen und eine andere Variable enthält(search bleibt bis auf 'block' immer gleich):

Code:
search = "<td><span onclick=\"javascript:add_row('"+block+"');\">[+]</span></td>";

Wie funkt das replace jetzt mit Sonderzeichen, wie oben geht es nicht ... ?
Mfg gamerfunkie
 
Hi,

erweiter das String-Objekt um eine Methode zum Maskieren der Sonderzeichen.
Code:
String.prototype.maskSpecials = function(){
  // Sonderzeichen-Array
  var arrSpecials = ["\\", "^", "[", "]", "(", ")", "$", ".", "|", "?", "*", "+", "{", "}", "/"];
  var strReturn = this;

  // Sonderzeichen-Array durchlaufen
  for(var i=0; i<arrSpecials.length; i++){
    // Sonderzeichen maskieren
    strReturn = strReturn.replace(eval("/\\"+ arrSpecials[i]+"/g"), "\\"+arrSpecials[i]);
  }

  // Ersetzten String zurückgeben
  return strReturn;
}
Jetzt kannst du zunächst den Suchstring generieren und in diesem die Sonderzeichen maskieren. Jetzt sollte
er als Suchmaske verwendet werden können.
Code:
var content = "Hallo<td><span onclick=\"javascript:add_row('test');\">[+]</span></td>, hier bin <td><span onclick=\"javascript:add_row('test');\">[+]</span></td> ich";
// Variable für Suchstring
var block = "test"; 
// Suchstring generieren
var strSearch = "<td><span onclick=\"javascript:add_row('"+block+"');\">[+]</span></td>";
// Sonderzeichen ersetzen
strSearch = strSearch.maskSpecials();
content = content.replace(eval("/"+ strSearch +"/g"), "");
alert(content);
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Zuletzt bearbeitet:
Zurück