Como fazer uma busca ignorando acentuação em JavaScript?
Para fazer uma busca ignorando acentuação em JavaScript, você pode utilizar expressões regulares para remover os acentos das palavras antes de compará-las.
Aqui está um exemplo de uma função que realiza essa transformação:
function removerAcentos(texto) {
return texto.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}
function buscarPalavra(palavra, texto) {
const palavraSemAcento = removerAcentos(palavra.toLowerCase());
const textoSemAcento = removerAcentos(texto.toLowerCase());
// Realizar a busca no texto sem acento
if (textoSemAcento.includes(palavraSemAcento)) {
return true;
}
return false;
}
// Exemplo de uso da função
const resultado = buscarPalavra('caminhao', 'O caminhão está na garagem.');
console.log(resultado); // true
Nesse exemplo, a função removerAcentos
recebe um texto como parâmetro e utiliza o método normalize
para remover as combinações de caracteres acentuados, como “ó” (U+00F3) e “ô” (U+00F4).
Em seguida, é utilizada uma expressão regular para substituir todas as outras formas de acentuação que não foram removidas pelo normalize
, como os acentos agudos e circunflexos. Essa expressão regular [\\u0300-\\u036f]
corresponde a todos os caracteres Unicode dentro desse intervalo de código e o modificador g
indica que a substituição deve ser feita em todas as ocorrências.
A função buscarPalavra
recebe uma palavra e um texto como parâmetros. Ela converte ambas as strings para caixa baixa utilizando o método toLowerCase
e chama a função removerAcentos
para remover os acentos de ambas.
Por fim, a função verifica se a palavra sem acento está contida no texto sem acento utilizando o método includes
.
Dessa forma, a função buscarPalavra
retornará true
se a palavra sem acento for encontrada no texto sem acento e false
caso contrário.
No exemplo de uso, a palavra “caminhão” é encontrada no texto “O caminhão está na garagem.”, mesmo com as variações de acentuação.