marcos web como Rails y Django ha incorporado soporte para "babosas", que se utilizan para generar URL legibles y SEO-amigable:código Java/librería para generar babosas (para su uso en URLs ricas)
Una cadena babosas contiene típicamente sólo de los personajes a-z
, 0-9
y -
y por lo tanto se puede escribir sin URL-escape (piensa "foo% 20ba r ").
Busco una función babosa de Java que da cualquier cadena Unicode válida devolverá una representación babosa (a-z
, 0-9
y -
).
Una función babosa trivial sería algo a lo largo de las líneas de:
return input.toLowerCase().replaceAll("[^a-z0-9-]", "");
Sin embargo, esta implementación no se ocuparía de la internacionalización y acentos (ë
>e
). Una forma de evitar esto sería enumerar todos los casos especiales, pero eso no sería muy elegante. Estoy buscando algo más bien pensado y general.
Mi pregunta:
- Cuál es la forma más general/práctico para generar babosas tipo Django/Rails en Java?
parece prometedor, pero la normalización no parece funcionar: "foobar" se traduce en "FBR" en lugar de esperar "foobar". ¿Sabes por qué? – knorv
Extraño: cuando pongo la cadena '" f \ u00F3 \ u00F2b \ u00e2r "' a través del método, obtengo '" foobar "'. Tal vez esté cometiendo un error de codificación en su fuente o archivo de datos; ver http://illegalargumentexception.blogspot.com/2009/05/java-rough-guide-to-character-encoding.html – McDowell
McDowell: Tiene toda la razón, fue un error de codificación. Gracias por una excelente respuesta! – knorv