304
|
glmxndr Amir Raminfar · 技术社区 · 15 年前 |
1
461
使用ES2015/ES6 String.Prototype.Normalize() ,
这里发生了两件事:
性能测试见注释。 或者,如果您只想排序 Intl.Collator 有足够的支持 ~85% right now ,也可提供Polyfill here 但我还没有测试过。
|
2
239
我稍微修改了khel版本,原因之一是:每个regexp解析/替换都需要O(n)操作,其中n是目标文本中的字符数。但是,regexp并不是我们所需要的。所以:
为了检验我的理论,我在 http://jsperf.com/diacritics/12 . 结果:
在Windows 8 64位上使用Chrome 28.0.1500.95 32位进行测试:
更新
在Windows 8 64位上的Chrome 33.0.1750中进行测试:
使用正则表达式
更新-2014年3月19日添加缺少的“oe”音调符号。 更新-2014年3月27日使用JS使用更快的方法交叉字符串-“什么?”版本
更新-2014年5月14日社区维基 |
3
100
一个更完整的版本,支持区分大小写,结扎等等。 原始来源: http://lehelk.com/2011/05/06/script-to-remove-diacritics/
|
4
57
下面是一个基于Unicode标准的非常快速的脚本,从这里开始: http://semplicewebsites.com/removing-accents-javascript
一些例子:
为了确保上面的拉丁语映射不会被复制/粘贴或其他转换损坏,请使用此base64编码字符串,替换上面的第一行:
|
5
37
新regexp的格式为
所以你想
|
6
13
基于Ian Elliott优秀解决方案的缩短代码:
编辑:更正的非工作代码 |
7
9
你可以使用
它可以作为一个独立的NPM包提供
结果将是:
|
8
6
通过给定的测试,解决方案似乎更快: http://jsperf.com/diacritics/9
工作示例: http://jsbin.com/sovorute/1/edit 推理 :这要快得多的一个原因是,我们只迭代由否定的regex模式选择的特殊字符。最快的测试( 不带In的字符串迭代 )在给定文本上迭代1001,这意味着 每个字符 . 这一个只迭代35次并输出 同样结果 . 请记住,这只会取代地图上所示的内容。 关于这个主题的经典文章: http://alistapart.com/article/accent-folding-for-auto-complete 信用卡 : http://semplicewebsites.com/removing-accents-javascript ,还提供了一个很好的字符映射。 |
9
5
我已经分叉了 billy 的代码 http://jsfiddle.net/billybraga/UHmnf/ (从他的 post ): http://jsfiddle.net/infralabs/dJX58/ 我更正了 γ 和 γ射线 并增加了这些字符的封面: 阿尔法 , α° , 阿尔法 , 奥尼奥 , 阿尔法 . 修改后的代码段如下:
|
10
5
替换音调符号的简单方法。
|
12
4
这是我修改过的版本 lehelk.com 的版本,该版本还删除了作为重音符号的HTML实体: http://jsfiddle.net/billybraga/UHmnf/ 不过,我对表演还是不太了解…
|
13
3
这是一个非常简单的解决方案,不需要太多的代码,使用一个非常简单的音调符号图,其中包括一些或全部映射到包含多个字符的ASCII等价物,即=>a e、=>ffi等…还包括一些非常基本的功能测试
|
14
3
外面有很多,但我认为这个很简单,很好:
如果还要删除特殊字符并转换下划线中的空格和连字符,请执行以下操作:
|
15
2
感谢大家
备注:我想要一个有效的解决方案,所以:
我的版本是:
我用这种方式:
评论:
|
16
2
我提供 this answer 同样的问题。它基于对所选字符(拉丁语1+2)的快速表查找替换,一对一(不可能将德语_¼更改为“ue”),但对于基本的“标准化”到7位ASCII来说效果良好。
是否将其他字符转换为?,结果绝对是7位ASCII。没有regex,没有魔力,简单的char数组工作。 |
17
2
|
18
1
假设您知道您在做什么,我怀疑IE6没有正确解释文件的编码,因此无法识别文件中的非ASCII字符:
(它“闻起来”是错误的,不过,我会研究排序,比如在服务器上使用具有区域意识的东西……但无论如何…… |
19
1
将用户定义的函数传递给
|
20
1
我用了string.js的 latinise() 方法,允许您这样做:
|
21
0
|
22
0
我知道在服务器端这样做是“作弊”,但上个星期我在JavaScript中也有过类似的任务,我介绍了一个简单的Java servlet。 removed the accents in Java . 真是太快了:) |
23
0
我发现所有这些都有点笨拙,而且我对正则表达式不太在行,所以这里有一个更简单的版本。如果字符串已经是Unicode格式,那么将其转换为您最喜欢的服务器端语言将非常容易:
|
24
0
您可以用多种方式创建regex。使用新的
或者使用regex文字符号:
你把两者混用了。 |
25
0
如果您愿意使用库,则可以使用string.js latize: http://stringjs.com/#methods/latinise |
26
0
|
27
0
这个 remove-accents NPM包是处理此类问题的非常简单的方法:
|
28
0
这是为我做的。javascript、谷歌应用程序脚本、Gas
|
29
-2
以上所有这些都不适用于Mac OS上使用的分解字符。 在这种情况下,为了删除音调符号,更简单的方法是:
见Olivier Miakinen的评论: https://groups.google.com/d/msg/fr.comp.lang.regexp/6IGJTbedGTM/G0sB2kAsR34J (以法语发布) |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |