我想將字符串以更可查詢的類似slug的格式存儲到數據庫中,強制爲小寫,用拉丁對應字母替換重音字母(ä→a,ö→o, ç - > C等),並用例如。替換其他特殊字符破折號。這種格式是否有標準?在Java中實現它最好的方法是什麼?創建可查詢的字符串
回答
這是解決方案,我發現目前爲止效果最好:
return Normalizer
.normalize(src.trim().toLowerCase(Locale.ENGLISH),
Normalizer.Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
.replaceAll("[^\\p{ASCII}]+", "-")
.replaceAll("[^a-z0-9]+", "-").replaceAll("(^-|-$)+", "");
這轉換:¿到que,Cool !!!! 1到cool-1和åæø到a。
數據庫可以通過排序來爲你做這件事。排序規定了特定字符集中的哪些字符在比較時可以被認爲是相同的。
看一看這對一個核對的視覺例如:
http://www.collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html
這裏的排序規則是如何從MySQL手冊工作一個很好的說明:
我正在尋找數據庫提供者無知的解決方案,因爲我的後端很可能不會支持。 – hleinone 2011-05-09 14:23:37
你可以試試這個庫:[鏈接](http://site.icu-project.org/#TOC-Why-ICU4J-)。它允許您使用Java中的字符集歸類,但不確定它是否符合您的特定用例。 – Eric 2011-05-09 14:39:24
Java ['Normalizer'](http://download.oracle.com/javase/6/docs/api/java/text/Normalizer.html)似乎將它們按照與您提供的那些MySQL鏈接類似的方式分組,我會留下像ð,ø和æ這樣的字符。我想最終只是a-z和破折號。 – hleinone 2011-05-09 20:28:16
- 1. 從查詢字符串創建PHP Breadcrumbs
- 2. 創建動態查詢字符串
- 3. 創建LINQ查詢作爲字符串
- 4. 從查詢結果中創建查詢字符串
- 5. jQuery的構建HTTP查詢字符串
- 6. 從RouteValueDictionary對象創建一個字符串/查詢字符串對象
- 7. 使用Ruby CSV創建Rails Records字符串字段不可查詢
- 8. MySQL上的計算列創建表查詢字符串
- 9. 如何創建一個查詢字符串授權的s3 URL?
- 10. 如何創建具有查詢字符串值的MySql VIRTUAL列
- 11. 創建通過頁面的查詢字符串HTML表單?
- 12. 如何創建請求URL有查詢字符串的RewriteRule
- 13. 使用瀏覽器上的查詢字符串創建書籤
- 14. 使用查詢字符串傳遞的值創建記錄
- 15. 查詢字符串
- 16. 查詢字符串
- 17. 構建查詢字符串鏈接
- 18. 從字符串列表構建查詢
- 19. 構建多參數查詢字符串
- 20. 構建重定向查詢字符串
- 21. XSS查詢字符串可能嗎?
- 22. 字符串創建
- 23. 使用查詢字符串查詢字符串列表?
- 24. Python的查詢(字符串)
- 25. servlet的查詢字符串
- 26. jQuery的查詢字符串
- 27. 使用錨鏈接創建查詢字符串
- 28. 創建格姆查詢JSON字符串列表
- 29. 查詢函數用字符串創建數據透視表
- 30. Python CGI - 使用查詢字符串創建超鏈接
我會看看這篇文章:http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net – MikeKusold 2011-05-09 13:46:33