Como a melhor maneira de fazer replaceAll no JavaScript?
11/01/2016
0
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(" ");
Dessa forma está correta?
var i = 0;
while ((i = str.indexOf("_", i)) != -1) {
str = str.replace("_", " ");
}
Ou ainda, esta?
str = str.split("_").join(" ");
Jorge Filho
Curtir tópico
+ 0
Responder
Posts
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:
Como:
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, [url:descricao=código funcional no jsfiddle ]https://jsfiddle.net/jothaz/ghq6axv8/1/[/url]
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.
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, [url:descricao=código funcional no jsfiddle ]https://jsfiddle.net/jothaz/ghq6axv8/1/[/url]
<!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
24/02/2016
Marcelo Pastore
É 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
Clique aqui para fazer login e interagir na Comunidade :)