Tag: 文本标准化

JavaScript中的程序性重音减less(又称文本正常化或不起作用)

我需要比较2个string,如下所示: 吕贝克==吕贝克 在JavaScript中。 为什么? 那么,我有一个自动完成的领域,出去到一个Java服务使用Lucene的地方名称是自然存储(如吕贝克),但也索引为规范化的文本, import sun.text.Normalizer; oDoc.setNameLC = Normalizer.normalize(oLocName, Normalizer.DECOMP, 0) .toLowerCase().replaceAll("[^\\p{ASCII}]",""); 通过这种方式,不知道input“墨西哥”的人可以input“墨西哥”,并获得返回“墨西哥”的比赛(其他可能的命中,如“墨西哥咖啡馆,迪拜,阿联酋”)。 现在的事情是我没有能力改变服务在服务器端进行任何突出显示,所以我在客户端JavaScript端强调如下: return result.replace( input.replace(/[aeiou]/g,"."), "<b>$1</b>"); 这是多一点花式,因为我在input中逃避特殊的正则expression式字符。 这对一个单词在匹配开始时的简单匹配是很好的,但是如果你突然想要支持像“伦敦咖啡馆”这样的多字匹配的话, input = input.strip().toLowerCase(); //fyi prototype's strip is like trim re = new RegEx(input.replace(/[aeiou]/g,".").replace(/\s+/g,"|"),"gi"); return result.replace(re, "<b>$1</b>"); 这不适用于说“伦敦咖啡”,因为它会将“加拿大道森城杰克伦敦小屋”标记为: "Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada"伦敦咖啡” "Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada" “,特别是”ck“和”Ci“ 所以我在寻找一些不像以下那样疯狂的东西: input = input.strip().toLowerCase(); […]