Remover acentos e caracteres especiais com JavaScript
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.
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-Zs]/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.
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-Zs]/g, "");
}
console.log(remover_acentos_espaco("São Paulo"));
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