Como a melhor maneira de fazer replaceAll no JavaScript?

11/01/2016

1

Qual a melhor maneira de fazer replaceAll no JavaScript?

Dessa forma está correta?

var i = 0;
while ((i = str.indexOf("_", i)) != -1) {
str = str.replace("_", " ");
}

Ou ainda, esta?

str = str.split("_").join(" ");
Responder

Posts

Alguem sabe?
Responder

01/02/2016

Jothaz

Em programação não podemos nos ater a receitas e formulas prontas, pois envolve criatividade e uma das maravalhas de programar é justamente abordar um questão de várias formas distintas e conseguir chegar ao mesmo resultado.

Se funcionou e retorno o resultado esperado então de certa forma esta correto. O que pode acontecer é que em determinado cenário algumas soluções são melhores e mais performáticas que outras.

Tanto:
var i = 0;
while ((i = str.indexOf("_", i)) != -1) {
str = str.replace("_", " ");
}


Como:
str = str.split("_").join(" ");


Estão corretos. No primeiro você faz um loop e retira o carácter no segundo você cria um vetor (split) usando o carácter que deseja eliminar e depois faz um join convertendo o vetor novamente em string. Já vi alguns teste que indicam que usar split e join é um das forma mais rápidas de se fazer o replace.

Veja outra formas de fazer o replace, código funcional no jsfiddle

<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>//<![CDATA[
    function myFunction(){
                     texto = '1234-5678-aaaa-bbbb'
            res = texto.replace('-', '')

            document.getElementById('texto').innerHTML = 'Texto de exemplo:  ' + texto;
            document.getElementById('replace').innerHTML = 'replace() - do JavaSCript troca somente o primeiro elemento econtrado:  ' + res;
            
            res = replaceAllRegExp(texto, '-', '');
            document.getElementById('replaceAllRegExp').innerHTML = 'replaceAll - Criei uma função  usando expressão regular, troca todos:  ' + res;
           
    }
        
    function replaceAllRegExp(str, find, replace) {
      return str.replace(new RegExp(find, 'g'), replace);
}    
//]]> 
</script>

  
</head>

<body>
  <button onclick="myFunction()">Click me</button>

    <p id="texto"></p>
    <p id="replace"></p>
    <p id="replaceAllRegExp"></p>
</body>

</html>


Como pode ser visto basta usar a imaginação, criatividade e conhecimento que o que não faltam são opções.

E isto usando somente JavaScript, pois com jQuery também é possível fazer o raplace, mas eu nem quis complicar.
Responder
É um dos grandes desafios dessa área.

pois envolve criatividade e uma das maravalhas de programar é justamente abordar um questão de várias formas distintas e conseguir chegar ao mesmo resultado.
Responder