1

次のような特殊文字を置き換える必要があります

  • ü -> ue
  • ä -> ae
  • え -> え

文字列で。それを行う最良の方法は何ですか?

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 に答える