Rogério Lino

Javascript: replaceAll()

Publicado por: Rogério Alencar Lino Filho em: 23 Julho, 2007

Ver post no novo domínio: http://blog.rogeriolino.com/2007/07/23/javascript-replaceall/

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]"));

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

Com a dica do Lucas fiz uma funcao para retirar todas os caracteres desejaveis de uma determinada palavra.

vou deixar aki caso seja útil para alguém…

function limpaVar(palavra,chars){
var replaces = chars.split(“”);
for(var i=0;i<replaces.length;i++){
palavra = palavra.split(replaces[i]).join("");
}
return palavra;
}

a chamada da funcao sera por exemplo:
variavel = limpaVar(variavel,',./');

Note que os caracteres que queira retirar da palavra estão entre as aspas simples, sem nenhum tipo de separacao entre elas.
No exemplo mostrado, irá retirar todas as vígulas (,), pontos (.) e barras (/) da variavel.

Bom, espero ter ajudado.

t+

Esqueci de mencionar que esta função específica foi feita apenas para retirar os caracteres.
Caso queira substituir os caracteres por algum outro é só adaptar a função para receber outro parâmetro com os argumentos de troca..

abraços

Olá Rogério,

Era o que eu precisava, me ajudou bastante!

abraçs

rah

Olá.
Basta apenas isto para fazer o que se pretende, conforme descrito em cima. Exemplo:

str = ‘Ola nome, se voce nao for nome clique aqui’;
str = str.replace(/nome/g, ‘Francisco’);

O resultado seria:
‘Ola Francisco, se voce nao for Francisco clique aqui’

Olá.
Basta apenas isto para fazer o que se pretende, conforme descrito em cima. Exemplo:

str = ‘Ola nome, se voce nao for nome clique aqui’;
str = str.replace(/nome/g, ‘Francisco’);

O resultado seria:
‘Ola Francisco, se voce nao for Francisco clique aqui’

Primeiro resultado no google mas, infelizmente, o exemplo abaixo desse função entra em um loop infinito…

replaceAll(​”str, minha str”, “str”, “string”​);​​

Deixar uma resposta

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Modificar )

Imagem do Twitter

You are commenting using your Twitter account. Log Out / Modificar )

Facebook photo

You are commenting using your Facebook account. Log Out / Modificar )

Connecting to %s

Categorias

Seguir

Get every new post delivered to your Inbox.