JavaScript

Como fazer uma busca ignorando acentuação em JavaScript

27 de julho de 2020

Como fazer uma busca ignorando acentuação em JavaScript

Neste artigo você vai aprender como criar uma busca ignorando acentuação em JavaScript – utilizando recursos nativos da linguagem e de forma simples

busca ignorando acentuacao javascript capa

Fala aí programador(a), beleza? Bora aprender como criar um recurso de busca com JavaScript!

A ideia principal neste conceito é utilizar uma expressão regular para remover todas as acentuações

Pois é a maneira mais fácil de trabalharmos com strings, com objetivo de manipular algo nelas

Se escolhêssemos outra abordagem como um loop for ou estruturas de condição if, o código poderia ficar muito complexo desnecessariamente e ruim de dar manutenção

A expressão regular se caracteriza pela seguinte instrução:

// sem instanciar objeto
let re = /\w+/;

// instanciando objeto
let re = new RegExp('\\w+');

As duas abordagens terão o mesmo resultado final, porém vamos escolher a sem objeto pois é mais simples a sintaxe

Então o próximo passo é utilizar o método replace para podermos substituir todos os acentos em caracteres sem acento

Veja a função completa de como substituir caracteres especiais:

function removerSpecials(texto) {
        // eliminando acentuação
    texto = texto.replace(/[ÀÁÂÃÄÅ]/,"A");
    texto = texto.replace(/[àáâãäå]/,"a");
    texto = texto.replace(/[ÈÉÊË]/,"E");
    texto = texto.replace(/[Ç]/,"C");
    texto = texto.replace(/[ç]/,"c");

    return texto.replace(/[^a-z0-9]/gi,''); 
}

let palavras = [
    'acentuação',
  'maçã',
  'crachá',
  'água'
];

for(let i = 0; i < palavras.length; i++) {
    
  console.log(removerSpecials(palavras[i]));

}

O resultado deste array será:

"acentuacao"
"maca"
"cracha"
"agua"

Agora podemos fazer nossos testes já na palavra sem acentuação se bate com a palavra que está na lista

Veja o exemplo completo:

function removerSpecials(texto) {
        // eliminando acentuação
    texto = texto.replace(/[ÀÁÂÃÄÅ]/,"A");
    texto = texto.replace(/[àáâãäå]/,"a");
    texto = texto.replace(/[ÈÉÊË]/,"E");
    texto = texto.replace(/[Ç]/,"C");
    texto = texto.replace(/[ç]/,"c");

    return texto.replace(/[^a-z0-9]/gi,''); 
}

let palavras = [
    'acentuação',
  'maçã',
  'crachá',
  'água'
];

let palavraParaEncontrar = 'cracha';

for(let i = 0; i < palavras.length; i++) {
    
  if(removerSpecials(palavras[i]) === palavraParaEncontrar) {
  	console.log(`A palavra ${palavras[i]} foi encontrada`);
  }

}

E aqui teremos a saída:

"A palavra crachá foi encontrada"

Viu como é simples?

Conclusão

Neste artigo vimos como criar uma busca ignorando acentuação em JavaScript

O primeiro passo é remover todos os caracteres especiais via regex

Depois só precisamos fazer a comparação entre a palavra que queremos encontrar e também o conjunto de palavras que estamos buscando

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x