我正在使用基于 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;
}
除了这样的替换功能,还有更好的方法吗?也许是为了“deaccent”被比较的字符串?