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

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

Overview

Bem-vindo ao mundo mágico da manipulação de strings em JavaScript! Se você já se viu frustrado tentando substituir todos os espaços em branco de uma string por underscores e não sabia como escapar das limitações do método replace, você veio ao lugar certo. Neste post, vamos explorar duas abordagens poderosas que garantirão que você nunca mais fique preso em um loop infinito de tentativa e erro. Seja você um entusiasta de Regex ou alguém que prefere truques mais diretos, temos a solução perfeita para você. Prepare-se para transformar seu código e suas habilidades de programação!

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(<strong>/ /g</strong>, "_");

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!