Substituindo todos os espaços de uma string por underscore (_). (Javascript)

Você possui uma string e quer substituir todos os espaços dela por underscores (_), mas a função replace não está colaborando? Neste post mostro duas opções de como resolver isso.

Vale lembrar que você pode utilizar a mesma técnica para substituir outros caracteres por underscores ou outra coisa. A lógica vai ser a mesma.

No Javascript, a função replace, quando utilizada de forma estática, substitui apenas a primeira ocorrência do caractere. Sendo assim, se você jogar a frase abaixo em um console:

"The quick brown fox jumps over the lazy dog.".replace(" ", "_");

 

Vai obter o seguinte resultado:

"The_quick brown fox jumps over the lazy dog."

 

Imaginando que não era este o seu objetivo, vamos as opções para substituir todos os caracteres.

 

Utilizando Regex

Vem chegando o regex para salvar o dia novamente.  Neste caso, a sintaxe é bem simples. Você vai substituir / /g por “_”:

"The quick brown fox jumps over the lazy dog.".replace(/ /g, "_");

 

A ideia é basicamente a mesma e o funcionamento da função replace também, mas a sintaxe utilizada seleciona todos os espaços que estão em uma string e ela substitui todos de uma vez só.

Se você não compreendeu o que está acontecendo com esta sintaxe regex, é o seguinte: /<o que está sendo buscado>/g. A letra g depois da ultima barra indica que é uma busca global. Se você utilizar a sintaxe .replace(/ /, “_”), o resultado será o mesmo que utilizar .replace(” “, “_”).

Você pode utilizar da forma mais conveniente, por exemplo:

 

"The quick brown fox jumps over the lazy dog.".replace(/lazy dog/, "bacon");

O código acima vai substituir as palavras lazy dog por bacon, fazendo a frase ficar assim: “The quick brown fox jumps over the bacon.”

 

Observação: Se você utilizar CoffeeScript, altere a sintaxe para /\ /g.

Se você não gosta de regex, temos outra opção…

 

Utilizando split/join

Para contra-intuitivo, mas você pode utilizar da seguinte forma:

 

"The quick brown fox jumps over the lazy dog.".split(" ").join("_");

O código acima vai quebrar a string em um vetor de strings, utilizando os espaços como separador dos itens. Na sequencia, ele transforma o vetor em uma string novamente, utilizando o underscore para unir os itens.

Parece estranho, mas é uma forma simples e rápida de fazer esta substituição.

 

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, JavaScript and tagged , , , .