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