Javascript: replaceAll()

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

UPDATE: Ao invés de usar a função abaixo, utilize split + join. Conforme mostrado no post https://rogeriolino.wordpress.com/2009/01/07/javascript-benchmark-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]"));

25 thoughts on “Javascript: replaceAll()

  1. m3nd3s

    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

    Responder
  2. Pingback: Javascript Benchmark: replaceAll « Rogério Lino

  3. Abner

    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

    Responder
  4. Jorge Hamaguchi

    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+

    Responder
  5. Jorge Hamaguchi

    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

    Responder
    1. Joao Luis

      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’

      Responder
  6. Joao Luis

    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’

    Responder
  7. fagnerm

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

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

    Responder
  8. Pingback: Javascript Benchmark: replaceAll | Rogério Lino

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s