我需要替换特殊字符,例如
- ü -> ue
- ä -> ae
- é -> e
在一个字符串中。最好的方法是什么?
谷歌搜索后,我找不到任何合适的东西。所以我最终写了我自己的。
normalize = (s) ->
mapping =
'ä': 'ae'
'ö': 'oe'
'ü': 'ue'
'&': 'and'
'é': 'e'
'ë': 'e'
'ï': 'i'
'è': 'e'
'à': 'a'
'ù': 'u'
'ç': 'c'
"'": ''
'´': ''
r = new RegExp(Object.keys(mapping).join('|'), 'g')
s.replace(r, (s)->
mapping[s]
)
考虑encodeURIComponent(和相关的解码)。
该 w3schools 页面上给出的示例:
var uri="http://w3schools.com/my test.asp?name=ståle&car=saab";
document.write(encodeURIComponent(uri));
输出:
http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab
注意中间的 å 变成%C3%A5
。
如果你不介意* @ - _ + . /
不被编码,还有escape()(和 unescape())。
根据“人类可读”要求进行编辑:
请注意,通过执行“oe”类型替换可能会出现所有字符,并且不要尝试将这些“可读”字符串转换回它们的原始形式,否则会破坏转换中的内容。这就是 escape 和 unescape 方法的重点。
考虑在您自己的转换后应用转义/取消转义以捕获任何剩余的意外字符。