创建 URL 友好的字符串

Ms0*_*s01 1 groovy

我有一个字符串,我想让它对 url 友好。该字符串可能如下所示:A string with $trange characters!".然后我想转义所有错误的 url 字符并最终得到a-string-with-trange-characters

在 Groovy 中实现此目的的最佳方法是什么?

Unk*_*Unk 5

在许多情况下,您可能不希望完全剥离非字母数字字符,而是首先分解它们:

\n\n
import java.text.Normalizer\n\nprintln Normalizer.normalize("String with \\$strang\\u00E9 chars", Normalizer.Form.NFD)\n    .replaceAll(/[^A-z0-9 ]/, "")\n    .replaceAll(/ +/, "-")\n
Run Code Online (Sandbox Code Playgroud)\n\n

上图中,\\u00E9是\'\xc3\xa9\'。分解将其变成字符“e”和组合标记“\xc2\xb4”。因此,当您应用转换时,结果是“奇怪-”而不是“奇怪-”。

\n\n

请注意,这并不是获取给定字符串的 ASCII 友好版本的全部内容...它不会转换 \' \xc3\x9f例如,我不知道在 Java/Groovy 中执行此操作的最佳方法(在初始字符串上使用 toUpperCase().toLowerCase() 似乎有点“hacky”)。

\n