我有一个字符串,我想让 url 友好。字符串可能如下所示:A string with $trange characters!".
然后我想转义所有错误的 url 字符并最终得到a-string-with-trange-characters
在 Groovy 中完成此任务的最佳方法是什么?
我有一个字符串,我想让 url 友好。字符串可能如下所示:A string with $trange characters!".
然后我想转义所有错误的 url 字符并最终得到a-string-with-trange-characters
在 Groovy 中完成此任务的最佳方法是什么?
这行得通吗?
string.replaceAll( /[^0-9a-zA-Z ]/, '' ).tr( ' ', '-' )
在许多情况下,您可能希望不完全去除非字母数字字符,而是首先分解它们:
import java.text.Normalizer
println Normalizer.normalize("String with \$strang\u00E9 chars", Normalizer.Form.NFD)
.replaceAll(/[^A-z0-9 ]/, "")
.replaceAll(/ +/, "-")
在上面,\u00E9
是'é'。分解将其变成字符'e'和组合标记'''。因此,当您应用转换时,结果是“奇怪-”而不是“奇怪-”。
请注意,这并不是获取给定字符串的 ASCII 友好版本的全部内容......例如,它不会将“ ß ”转换为“ss”。我不知道在 Java/Groovy 中执行此操作的最佳方法(在初始字符串上使用 toUpperCase().toLowerCase() 似乎有点“hacky”)。