Rogério Lino

Javascript: replaceAll()

Posted by: Rogério Alencar Lino Filho on: 23 Julho, 2007

Creio que algumas pessoas já se depararam com a situação de ter que substituir um caracter ou uma string num texto. Tudo resolveria casa o replace() não substituisse só o primeiro token encontrado.

Por isso temos que criar nossa própria função para sair buscando os resultados repitidos. Abaixo segue uma simples função que realiza tal instrução:

function replaceAll(string, token, newtoken) {
	while (string.indexOf(token) != -1) {
 		string = string.replace(token, newtoken);
	}
	return string;
}

Com a ajuda do indexOf() – que retorna a posição da string que queira achar ou -1 caso não encontre – podemos em poucas linhas resolver isso.

Enquanto ainda existir a string que queira substituir (indexOf != -1) substitua (replace).

Uso:

str = "Phasellus commodo gravida ligula. Vivamus libero eros, dignissim sit amet, imperdiet quis, condimentum ut, enim.";
window.alert(replaceAll(str, "a", "[A]"));

12 Respostas para "Javascript: replaceAll()"

E se por acaso eu quiser substituir ‘ por \\’.
Não irá funcionar =|

me salvou

Olá meu amigo rogério, vc também pode substituir sua função por um replace usando ER, da seguinte forma:

function replaceAll(string, token, newtoken) {
var minha_er = new RegExp(“/”+token+”/g”);
var string_retorno = string.replace( minha_er, newtoken )
return string_retorno;
}

Espero ter ajudado

Opa,

Assim tb rola:

("Lucas é Ferreira").split("é").join("Resendes");

Falou ;)

Muito boa a tua dica Lucas.
;)
para um caso mais simples ela tem o mesmo ultilidade que a função acima.

[...] Há algum tempo escrevi um post contendo um exemplo de método para fazer replace em toda String. No caso o método que escrevi usava while [...]

Achei um outro post q fazia de uma maneira bem mais simples

str = str.replace(/find/g,”replace”)

onde find é a expressão que vc quer substituir
http://www.bradino.com/javascript/string-replace/

no meu caso que eu só queria substituir um ponto, ficou:

alert(v.replace(/\./g,”"));

sem precisar criar uma nova função

ops, ignore o alert no replace
=P

tive um probleminha com o seguinte

valor = document.getElementById(“meuTextAreaComQuebraDeLinha”);
valor = replaceAll(valor,”\n”, ” “);

No firefox beleza. No IE não. Creio que o IE considere \r\n

valeu pela dica, acabei percebendo esse comportamento do replace() pelo firebug hehehe..

Valeu pela dica Rogério!

Muito útil!!!

simples e prática..

Deixar uma Resposta

Categorias