用于清理用户输入标题以使其显示在URL中的Java库?

我正在做一个Web应用程序。 我想有一个SEO友好的链接,如下所示:

http://somesite.org/user-entered-title 

上述用户输入标题是从具有名为title的字段的用户创建的记录中提取的。

我想知道是否有任何Java库用于清理这些用户输入的文本(例如删除空格),然后在URL中显示它。

从用户输入的“stackoverflow很好”清理后,我的目标文本就像“stackoverflow-is-great”。

我能够编写代码来用破折号替换字符串中的空格,但不确定其他规则/想法/最佳实践是什么使文本成为URL的一部分。

请注意,用户输入的标题可能使用不同的语言,而不仅仅是英语。

感谢您的任何输入和指针!

问候。

你想要的是某种“ SLUGifying ”prhase到一个URL,所以它是SEO友好的。

一旦遇到这个问题,我开始使用maddemcode.com提供的解决方案。 您将在下面找到适合的代码。

诀窍是正确使用Normalize JDK类并进行一些额外的清理。 用法很简单:

 // casingchange-aeiouaeiou-takesexcess-spaces System.out.println(slugify("CaSiNgChAnGe áéíóúâêîôû takesexcess spaces ")); // these-are-good-special-characters-sic System.out.println(slugify("These are good Special Characters šíč")); // some-exceptions-123-aeiou System.out.println(slugify(" some exceptions ¥123 ã~e~iõ~u!@#$%¨&*() ")); // gonna-accomplish-yadda System.out.println(slugify("gonna accomplish, yadda, 완수하다, 소양양)이 있는 ")); 

function代码:

 public static String slugify(String input) { return Normalizer.normalize(input, Normalizer.Form.NFD) .replaceAll("[^\\p{ASCII}]", "") .replaceAll("[^ \\w]", "").trim() .replaceAll("\\s+", "-").toLowerCase(Locale.ENGLISH); } 

在源页面( http://maddemcode.com/java/seo-friendly-urls-using-slugify-in-java/ )中,您可以查看它的来源。 不过,上面的小片段的工作原理相同。

如您所见,有一些未转换的特殊字符。 据我所知,翻译它们的每个人都使用某种地图,比如Djago的urlify( 参见这里的示例地图 )。 你需要它们,我相信你最好的选择就是制造一个。

您似乎想对字符串进行URL编码。 它可以在核心Java中使用,而无需使用外部库。 URLEncoder是您需要的类。

英语以外的语言不应该是一个问题,因为该类允许您指定字符编码,它负责特殊字符,如重音符号等。