如何创建一个人类可读的规范化字符串?

时间:2012-06-15 16:20:51

标签: javascript coffeescript normalize

我需要替换像

这样的特殊字符
  • ü - > UE
  • ä - > AE
  • é - > ë

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

2 个答案:

答案 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来捕获任何剩余的意外字符。