Remover acentos e caracteres especiais com JavaScript
Neste artigo vamos ver 3 formas de como remover acentos e caracteres especiais de uma string utilizando JavaScript.
O que você vai ver neste artigo:
* Remover acentos com Normalize
* Remover caracteres espeeciais com Expressões Regulares
* Remover acentos e caracteres especiais com Normalize e Expressões Regulares
Remover acentos com Normalize
Se você tem uma string com acentos e deseja remover a acentuação, a partir do JavaScript ES 6 (2015), existe um recurso chamado Normalize que permite substituir acentos por caracteres sem acentuação.
Aqui tem um exemplo:
var nome = "São Paulo";
var nome2 = nome.normalize("NFD");
console.log(nome2);
O retorno deste script é "Sao Paulo"
A função "normalize" utiliza a codificação Unicode para converter os caracteres com acentos. A opção NFD é a abreviação de "Normalization Form Canonical Decomposition". Existem outras 3 opções de conversão, que são NFC, NFKC e NFKD. O significado destas abreviações é:
Normalization Form D (NFD) - Canonical Decomposition
Normalization Form C (NFC) - Canonical Decomposition, followed by Canonical Composition
Normalization Form KD (NFKD) - Compatibility Decomposition
Normalization Form KC (NFKC) - Compatibility Decomposition, followed by Canonical Composition
Para saber em detalhes como funcionam estas opções consulte o link a seguir:
Remover caracteres espeeciais com Expressões Regulares
Para remover caracteres especiais, você vai precisar utilizar expressões regulares. Aqui tem um exemplo:
var nome = "2019 (Sao Paulo)";
var nome2 = nome.replace(/[^a-zA-Z\s]/g, "")
console.log(nome2);
O retorno deste script também é "Sao Paulo".
Nesta expressão regular, será considerado válido tudo o que tiver letras maiúsculas, minusculas ou espaço. O que for diferente será removido.
Remover acentos e caracteres especiais com Normalize e Expressões Regulares
Você pode combinar a normalização e as expressões regulares para validar tudo de uma vez.
O exemplo abaixo faz a normalização de uma string, mantendo apenas letras, espaços e caracteres sem acentuação.
function remover_acentos_espaco(str) {
return str.normalize("NFD").replace(/[^a-zA-Z\s]/g, "");
}
console.log(remover_acentos_espaco("São Paulo"));
Encerramento
Neste artigo você viu como remover acentos e caracteres especiais utilizando JavaScript
Se você deseja mais dicas sobre como trabalhar com expressões regulares no JavaScript eu recomendo que você veja este artigo:
Localizando e substituindo dados com expressões regulares com JavaScript