Я использую поиск на основе AJAX для имен, которые пользователь ищет в текстовом поле.
Я предполагаю, что все имена в базе данных будут транслитерированы в европейские алфавиты (т. Е. Без кириллицы, японского, китайского). Однако имена по-прежнему будут содержать символы с диакритическими знаками, такие как ç, ê и даже č и ć.
Тем не менее, простой поиск, такой как «Micic», не будет соответствовать «Mičić» - и пользователь ожидает, что так и будет.
Поиск AJAX использует регулярные выражения для определения совпадения. Я изменил сравнение регулярных выражений, используя эту функцию в попытка сопоставить больше символов с диакритическими знаками. Однако это немного неуклюже, поскольку не учитывает все символы.
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;
}
Помимо такой функции подстановки, есть ли лучший способ? по сравнению?