ユーザーがテキスト ボックスで検索する名前に、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;
}
このような置換関数とは別に、より良い方法はありますか? おそらく、比較されている文字列を「アクセントをなくす」ためですか?