1

我需要替换特殊字符,例如

  • ü -> ue
  • ä -> ae
  • é -> e

在一个字符串中。最好的方法是什么?

4

2 回答 2

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]
  )
于 2012-06-15T16:20:51.857 回答
2

考虑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 方法的重点。

考虑在您自己的转换后应用转义/取消转义以捕获任何剩余的意外字符。

于 2012-06-15T16:23:59.523 回答