Estoy usando una búsqueda basada en AJAX para los nombres que un usuario busca en un cuadro de texto.Uso de JavaScript para realizar coincidencias de texto con/sin caracteres acentuados
Supongo que todos los nombres de la base de datos se transcribirán en alfabetos europeos (es decir, no cirílico, japonés, chino). Sin embargo, los nombres seguirán conteniendo caracteres acentuados, como ç, ê e incluso č y ć.
Sin embargo, una búsqueda simple como "Micic" no coincidirá con "Mičić", y la expectativa del usuario es que sí lo hará.
La búsqueda AJAX utiliza expresiones regulares para determinar una coincidencia. Modifiqué la comparación de expresión regular usando esta función en un intento de hacer coincidir más caracteres acentuados. Sin embargo, es un poco torpe ya que no toma en cuenta todos los personajes.
function makeComp (input)
{
input = input.toLowerCase();
var output = '';
for (var i = 0; i < input.length; i ++)
{
if (input.charAt (i) == 'a')
output = output + '[aàáâãäåæ]'
else if (input.charAt (i) == 'c')
output = output + '[cç]';
else if (input.charAt (i) == 'e')
output = output + '[eèéêëæ]';
else if (input.charAt (i) == 'i')
output = output + '[iìíîï]';
else if (input.charAt (i) == 'n')
output = output + '[nñ]';
else if (input.charAt (i) == 'o')
output = output + '[oòóôõöø]';
else if (input.charAt (i) == 's')
output = output + '[sß]';
else if (input.charAt (i) == 'u')
output = output + '[uùúûü]';
else if (input.charAt (i) == 'y')
output = output + '[yÿ]'
else
output = output + input.charAt (i);
}
return output;
}
Aparte de una función de sustitución como esta, ¿hay una mejor manera? ¿Tal vez para "desacralizar" la cadena que se compara?
Gracias por el código, utilicé su función para reemplazar las vocales acentuadas en el texto de entrada y funcionó bien. – IgniteCoders