创建一个URL友好的字符串

时间:2012-11-11 13:32:59

标签: groovy

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

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

2 个答案:

答案 0 :(得分:4)

这有用吗?

string.replaceAll( /[^0-9a-zA-Z ]/, '' ).tr( ' ', '-' )

答案 1 :(得分:4)

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

import java.text.Normalizer

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

在上文中,\u00E9是'é'。分解将其转换为字符“e”和组合标记“”。因此,当您应用转换时,结果是“奇怪的”而不是“strang - ”。

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