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]"));
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..
mto bom
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”);
9 Agosto, 2007 às 11:44 am
E se por acaso eu quiser substituir ‘ por \\’.
Não irá funcionar =|