gpt4 book ai didi

javascript - 使用 JavaScript 执行带/不带重音字符的文本匹配

转载 作者:行者123 更新时间:2023-12-03 02:17:55 24 4
gpt4 key购买 nike

我正在使用基于 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;
}

除了这样的替换函数之外,还有更好的方法吗?也许是为了“减弱”正在比较的字符串?

最佳答案

有一种方法可以“对正在比较的字符串进行“去重音””,而无需使用列出您要删除的所有重音符号的替换函数...

这是easiest solution我可以考虑从字符串中删除重音符号(和其他变音符号)。

查看实际效果:

var string = 'Ça été Mičić. ÀÉÏÓÛ';
console.log(string);

var string_norm = string.normalize('NFD').replace(/\p{Diacritic}/gu, ''); // Old method: .replace(/[\u0300-\u036f]/g, "");
console.log(string_norm);

  • .normalize(…) 分解字母和变音符号。
  • .replace(…) 删除所有变音符号。

关于javascript - 使用 JavaScript 执行带/不带重音字符的文本匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com