如何将“Lorem 3 ipsum dolor sit amet”翻译成Java友好的“Lorem-3-ipsum-dolor-sit-amet”?

时间:2010-09-07 13:19:15

标签: java regex seo friendly-url

在我的博客应用中,用户可以输入任何文本作为其条目的标题,然后根据文本生成URL。

我验证了他们的标题,以确保只包含字母和数字

如果他们输入类似

的内容
Lorem 3 ipsum dolor sit amet

我怎么能生成这个文本的更友好的SEO版本:

Lorem-3-ipsum-dolor-sit-amet

3 个答案:

答案 0 :(得分:7)

实际上,这并不像通过大肆替换空间那么简单。您通常也希望将其全部小写并标准化/替换变音符号,例如á,ö,è等无效 URL字符。唯一有效的字符在this Wikipedia page的第二个表中列为“未保留字符”。

以下是这样一个函数的样子:

public static String prettyURL(String string) {
    return Normalizer.normalize(string.toLowerCase(), Form.NFD)
        .replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
        .replaceAll("[^\\p{Alnum}]+", "-");
}

它基本上做了以下几点:

  • 小写字符串
  • 删除合并diacritical marks(在规范化程序从实际字符中“提取”它们之后)
  • 用连字符替换非字母数字字符

另见:

答案 1 :(得分:4)

String s = "Lorem 3 ipsum dolor sit amet"
s = s.replaceAll(" ","-");

答案 2 :(得分:0)

因为它似乎不允许我发表评论。我愿意:

String s = "Lorem 3 ipsum dolor sit amet"
s = s.replaceAll(" ","_");

使用Underscore字符,因为它是一个空格指示器。自从我完成java以来​​已经有一段时间但是我知道.Net中有一个函数可以清理文件名,因此它对文件系统是安全的。我的许多相同的一般规则适用于URL,所以如果你能在API中找到一个,那么值得一看。