1

URLフレンドリーにしたい文字列があります。文字列は次のようA string with $trange characters!".になります: そして、すべての悪い URL 文字をエスケープして、a-string-with-trange-characters

Groovyでこれを達成する最良の方法は何ですか?

4

2 に答える 2

4

これは機能しますか?

string.replaceAll( /[^0-9a-zA-Z ]/, '' ).tr( ' ', '-' )
于 2012-11-11T13:48:21.487 に答える
4

多くの場合、英数字以外の文字を完全に削除するのではなく、最初に分解することをお勧めします。

import java.text.Normalizer

println Normalizer.normalize("String with \$strang\u00E9 chars", Normalizer.Form.NFD)
    .replaceAll(/[^A-z0-9 ]/, "")
    .replaceAll(/ +/, "-")

上記で\u00E9は、「é」です。分解すると、これが文字「e」と結合記号「´」に変わります。したがって、変換を適用すると、結果は「strang-」ではなく「strange-」になります。

これは、指定された文字列の ASCII 対応バージョンを取得する際のすべての話ではないことに注意してください...たとえば、' ß ' を 'ss' に変換しません。Java/Groovy でこれを行う最善の方法を知りません (最初の文字列で toUpperCase().toLowerCase() を使用するのは少し「ハッキー」に思えます)。

于 2012-11-11T14:10:59.337 に答える