相关疑难解决方法(0)

在JavaScript中删除字符串中的重音符号/变音符号

如何从字符串中删除突出的字符?特别是在IE6中,我有这样的事情:

accentsTidy = function(s){
    var r=s.toLowerCase();
    r = r.replace(new RegExp(/\s/g),"");
    r = r.replace(new RegExp(/[àáâãäå]/g),"a");
    r = r.replace(new RegExp(/æ/g),"ae");
    r = r.replace(new RegExp(/ç/g),"c");
    r = r.replace(new RegExp(/[èéêë]/g),"e");
    r = r.replace(new RegExp(/[ìíîï]/g),"i");
    r = r.replace(new RegExp(/ñ/g),"n");                
    r = r.replace(new RegExp(/[òóôõö]/g),"o");
    r = r.replace(new RegExp(/œ/g),"oe");
    r = r.replace(new RegExp(/[ùúûü]/g),"u");
    r = r.replace(new RegExp(/[ýÿ]/g),"y");
    r = r.replace(new RegExp(/\W/g),"");
    return r;
};
Run Code Online (Sandbox Code Playgroud)

但IE6让我烦恼,似乎它不喜欢我的正则表达式.

javascript diacritics

385
推荐指数
13
解决办法
22万
查看次数

JavaScript中的程序口音减少(又称文本规范化或不合理)

我需要将2个字符串比较为相等,如下所示:

吕贝克==吕贝克

在JavaScript中.

为什么?好吧,我有一个自动完成字段,使用Lucene进行Java服务,其中地名自然存储(如Lübeck),但也被索引为规范化文本,

import sun.text.Normalizer;
oDoc.setNameLC = Normalizer.normalize(oLocName, Normalizer.DECOMP, 0)
    .toLowerCase().replaceAll("[^\\p{ASCII}]","");
Run Code Online (Sandbox Code Playgroud)

这样一来,一个不知道输入"Mèxico"的人可以输入"墨西哥"并得到一个返回"Mèxico"的比赛(在很多其他可能的点击中,如"CaféMèxico,Dubai,UAE").

现在问题是我没有能力更改服务以在服务器端进行任何突出显示,因此我在客户端JavaScript方面突出显示如下内容:

return result.replace( input.replace(/[aeiou]/g,"."), "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)

这有点花哨,因为我在输入中转义了特殊的正则表达式字符.这对于点击开头的简单单词匹配很好,但是如果你突然希望支持像"london cafe"这样的多字匹配,它真的会崩溃:

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>");
Run Code Online (Sandbox Code Playgroud)

这不适用于说"伦敦ca"(正在输入伦敦咖啡馆),因为它会将"Jack London Cabin,Dawson City,Canada"标记为:"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();
input = input.replace(/a/g,"[ÀàÁáÂâÃãÄäÅ寿??????]");
input = input.replace(/e/g,"[ÈèÉéÊêËë??????????]");
// ditto for i, o, u, y, c, n, maybe also d, g, h, j, k, l, r, s, t, w, z 
re …
Run Code Online (Sandbox Code Playgroud)

javascript unicode normalization accent-insensitive text-normalization

46
推荐指数
2
解决办法
1万
查看次数

当某些字母发生变化时,如何在复数中找到单数?最好的方法是什么?

当某些字母发生变化时,如何在复数中找到单数?

以下情况:

  • 德语单词Schließfach是一个密码箱。
  • 复数是 Schließfächer.

如您所见,字母a已更改为ä。出于这个原因,第一个单词不再是第二个单词的子字符串,它们在“正则表达式技术”上是不同的。

也许我在下面选择的标签不在正确的角落。也许正则表达式对我来说不是正确的工具。我已经看到naturaljs( natural.NounIflector()) 为英语单词提供了开箱即用的功能。也许德语也有同样的解决方案?

什么是最好的方法,我如何在德语的复数中找到单数?

javascript nlp diacritics

5
推荐指数
1
解决办法
190
查看次数