Suchmuster wird einfach nicht gefunden und ersetzt

blubbbla

Erfahrenes Mitglied
Ich habe einen String: "<a href="#">Home</a> &gt; <a href="#">Mailbox</a> &gt; <b>Gesuch Detailansicht</b>
Und einen Suchstring: &gt; <b>Gesuch Detailansicht</b>
Dieser soll im oberen gefunden und durch "" ersetzt werden. Aber es passiert einfach nichts :-(

Im Code sieht das dann so aus:
str.replace(/data['last']/,"")

in data['last'] steckt der Suchstring. warum klappt das einfach nicht?
 
Weil Reguläre Ausdrücke etwas anderes sind als Strings. Alles was in Backslashes steht, wird als regulärer Ausdruck interpretiert. Außerdem sieht Javascript auch keine Veranlassung deine Variable hier als Variable und nicht als regulären Ausdruck zu behandeln. So wie es bei dir steht, würde in dem Text "Meine Variable heißt datal oder data' oder datas oder datah" das "datal", das "data'" und das "datas" ersetzt werden, nicht aber das "datah" und schon gar nicht der Wert der Variablen durch irgend etwas.

Entweder du verwendest gleich Strings:
Javascript:
str.replace(data['last'],'');

oder reguläre Ausdrücke:
Javascript:
rx = new RegExp(data['last']);
str.replace(rx,'');
Bei letzterem musst du aber auf Dinge wie Escape-Sequenzen achten - der String in data['last'] muss z.B. Punkte in escapter Form ("\.") drin haben, nicht in normaler Form.

Mischen ist keine parktikable Methode.
 
Zuletzt bearbeitet:
Hm also Ich hab jetzt erstmal den String in data['last'] mit einer Fkt. bearbeitet, dass die Sonderzeichen maskiert werden. Da kommt dann raus: "&gt; <b>Gesuch Detailansicht<\/b>"

Und dann hab ich deine beiden Funktionen aufgerufen. Aber trotzdem ersetzt er mir es nicht :confused:

Allerdings wenn ich dann einfach mal mit str.match(rx) suche.. Dann findet er das. Jetzt bin ich noch verwirrter. Dann kann er das doch auch mit replace ersetzen
 
Zuletzt bearbeitet:
Folgendes funktioniert jedenfalls erwiesenermaßen:
Javascript:
str = "Wieso geht denn die Ersetzung nicht?";
str = str.replace("Wieso","Warum");
alert(str);
Ich vermute du hast irgentwo einen blöden Fehler in deinem Code. Poste also bitte den gesammten Code, damit wir suchen können.
 
Zurück