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'和组合标记'''。因此,当您应用转换时,结果是“奇怪-”而不是“奇怪-”。

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

于 2012-11-11T14:10:59.337 回答