我需要替换像
这样的特殊字符在一个字符串中。最好的方法是什么?
答案 0 :(得分:2)
谷歌搜索后,我找不到合适的东西。所以我最终写了自己的。
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]
)
答案 1 :(得分:2)
考虑encodeURIComponent(以及相关的解码)。
w3schools页面上给出的例子:
var uri="http://w3schools.com/my test.asp?name=ståle&car=saab";
文件撰写(encodeURIComponent方法(URI));
输出:
http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab
请注意,中间的å变为%C3%A5
。
如果您不介意* @ - _ + . /
没有被编码,那么还有escape()(和unescape())。
根据“人类可读”的要求进行编辑:
请注意,通过执行“oe”类型替换来覆盖可能出现的所有字符,并且您永远不会尝试将这些“可读”字符串转换回其原始形式,否则您将损坏转换中的内容。这是逃避和unescape方法的重点。
考虑在自己的转换后应用escape / unescape来捕获任何剩余的意外字符。