2013-03-27 11 views
12

Ich muss eine Zeichenfolge (str1) durch eine andere Zeichenfolge (str2) jedes Mal ersetzen, wenn str1 in einem bestimmten div zeigt.Replace-Funktion funktioniert nur einmal (Javascript)

Dies ist, was ich

<script type="text/javascript"> 
$(window).load(function(){ 

var str=document.getElementById("foo").innerHTML; 
var n=str.replace("Google","Yahoo"); 
document.getElementById("foo").innerHTML=n; 

}); 

</script> 

und die HTML-

<div id="foo"> 
Google is the best website ever <br /> 
Google is not the best website ever</div> 

Leider so weit gekommen, wenn ich es laufen, ist es die erste Instanz des Wortes Google nur ersetzt.

Was mache ich falsch? Was muss ich hinzufügen, um ALLE Instanzen des Wortes zu ersetzen?

+2

möglich Duplikat [alle Vorkommen einer Zeichenfolge in Javascript Ersetzen?] (Http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – Dennis

Antwort

23

Verwenden Sie Regex /string/g, um alle Vorkommen zu ersetzen, Sie verwenden Teilzeichenfolge, die nur erste Vorkommen nach Dokumentation der replace() Funktion ersetzen wird.

Live Demo

var n=str.replace(/Google/g,"Yahoo"); 

String.prototype.replace() Die replace() -Methode gibt einen neuen String mit einigen oder allen Spielen eines Musters durch einen Ersatz ersetzt. Das Muster kann eine Zeichenfolge oder eine RegExp sein, und die Ersetzung kann eine Zeichenfolge oder eine Funktion sein, die für jede Übereinstimmung aufgerufen wird.

str.replace (regexp | substr, newSubStr | Funktion)

Sie verwenden substr Muster, das nur erste Vorkommen ersetzt.

substr (Muster)

Ein String, der durch newSubStr ersetzt werden soll. Es wird als Verbatim-Zeichenfolge behandelt und nicht als regulärer Ausdruck interpretiert. Nur das erste Vorkommen wird ersetzt.

Verwenden Sie dieses Regexp-Muster, um alle Vorkommen zu ersetzen.

regexp (Muster)

A RegExp Objekt oder Literal. Die Übereinstimmung wird durch den Rückgabewert von Parameter # 2 ersetzt.

+0

Thank Dich sehr. Es funktionierte! –

+0

Gern geschehen. – Adil

+0

gute Antwort. Können Sie erklären, warum die Funktion 'replace()', wenn ein String-Argument angegeben wird, nicht jedes Vorkommen ersetzt? – chharvey

Verwandte Themen