Web框架,如Rails和Django的内置了支持,这是用来生成可读和SEO友好的URL“子弹”:Java代码/库生成蛞蝓(在漂亮的网址使用)
团状串典型地只包含的字符a-z
,0-9
-
和并因此可以在不写入URL转义(认为“富%20BA R“)。
我正在寻找Java slug函数给定任何有效的Unicode字符串将返回一个slug表示(a-z
,0-9
和-
)。
一个平凡的蛞蝓功能将沿着线的东西:
return input.toLowerCase().replaceAll("[^a-z0-9-]", "");
然而,这个实现不会处理国际和口音(ë
>e
)。解决这个问题的一个方法是列举所有特殊情况,但这不会很优雅。我正在寻找更加深思熟虑和一般的东西。
我的问题:
- 什么是生成Java的Django/Rails的类型蛞蝓最普遍的/实际的方法?
看起来很有希望,但正常化似乎并没有工作:“Foobar的”被翻译成“FBR”,而不是预期的“FOOBAR”。你知道为什么吗? – knorv
奇怪 - 当我通过这个方法把字符串'“f \ u00F3 \ u00F2b \ u00e2r''变成''foobar”'。您可能在源文件或数据文件中发生编码错误;请参阅http://illegalargumentexception.blogspot.com/2009/05/java-rough-guide-to-character-encoding.html – McDowell
McDowell:你是绝对正确的 - 这是一个编码错误。感谢您的出色答案! – knorv