用于清理用户输入标题以使其显示在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
是您需要的类。
英语以外的语言不应该是一个问题,因为该类允许您指定字符编码,它负责特殊字符,如重音符号等。