Używam wyszukiwania opartego na AJAX dla nazw, które użytkownik wyszukuje w polu tekstowym.Używanie JavaScript do wykonywania dopasowań tekstowych z/bez znaków akcentowanych
Przyjmuję założenie, że wszystkie nazwy w bazie danych będą transliterowane do europejskich alfabetów (tj. Bez cyrylicy, japońskiego, chińskiego). Jednak nazwy będą nadal zawierać znaki akcentowane, takie jak ç, ê, a nawet č i ć.
Proste wyszukiwanie, takie jak "Micic", nie będzie jednak pasować do "Mičića" - a oczekiwaniem użytkownika jest to, że tak będzie.
Wyszukiwanie AJAX używa wyrażeń regularnych do określenia dopasowania. Zmodyfikowałem porównanie wyrażeń regularnych, używając tej funkcji, aby dopasować więcej znaków akcentowanych. Jest to jednak trochę niezgrabne, ponieważ nie uwzględnia wszystkich postaci.
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;
}
Oprócz takiej funkcji zastępowania istnieje lepszy sposób? Być może do "pomarszczenia" porównywalnej struny?
Dzięki za kod, użyłem twojej funkcji, aby zastąpić akcentowane samogłoski w tekście wejściowym i działało poprawnie. – IgniteCoders