2013-03-27 22 views
12

Ho bisogno di sostituire una stringa (str1) con un'altra stringa (str2) ogni volta che str1 viene visualizzato in un div specifico.Sostituisci funzione funziona solo una volta (javascript)

Questo è quello che ho ottenuto finora

<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> 

e l'html

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

Purtroppo, quando l'eseguo, sostituisce solo la prima istanza della parola Google.

Cosa sto sbagliando? Cosa devo aggiungere per sostituirlo TUTTE le istanze della parola?

+2

possibile duplicato di [Sostituzione di tutte le occorrenze di una stringa in JavaScript?] (Http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript) – Dennis

risposta

23

Usa regex /string/g per sostituire tutte le occorrenze, si utilizza stringa che sostituirà solo i primi occorrenze come da documentazione di replace() funzione.

Live Demo

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

String.prototype.replace() Il metodo replace() restituisce una nuova stringa con alcune o tutte le partite di un modello sostituito da un sostituto. Il pattern può essere una stringa o un RegExp e la sostituzione può essere una stringa o una funzione da chiamare per ogni corrispondenza.

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

Si utilizza modello substr che sostituirà solo prima occorrenza.

substr (pattern)

String che deve essere sostituito da newSubStr. Viene considerato come una stringa letterale e non viene interpretato come un'espressione regolare. Solo la prima occorrenza verrà sostituita.

Utilizzare questo reexp patter per sostituire tutte le occorrenze.

regexp (pattern)

oggetto A RegExp o letterale. La partita è sostituita da il valore di ritorno del parametro # 2.

+0

Grazie tu molto. Ha funzionato! –

+0

Prego. – Adil

+0

buona risposta. puoi spiegare perché la funzione 'replace()', quando viene fornito un argomento stringa, non sostituisce ogni occorrenza? – chharvey

Problemi correlati