Java-Code / Bibliothek zum Erzeugen von Nacktschnecken (zur Verwendung in hübschen URLs)
Web-frameworks wie Rails und Django hat eine eingebaute Unterstützung für "slugs", die verwendet werden zum generieren lesbare und SEO-freundliche URLs:
Einem slug string enthält in der Regel nur die Zeichen a-z
0-9
und -
und kann daher geschrieben werden, ohne die URL-escaping (denke, "foo%20bar").
Ich bin auf der Suche nach eine Java-slug-Funktion, die eine gültige Unicode-string zurück slug Darstellung (a-z
0-9
und -
).
Trivial slug-Funktion wäre etwas entlang der Linien von:
return input.toLowerCase().replaceAll("[^a-z0-9-]", "");
Jedoch, diese Implementierung nicht mit Internationalisierung und Akzente (ë
> e
). Ein Weg, um dieses sein würde, um alle aufzuzählen besonderen Fällen, aber das wäre nicht sehr elegant. Ich bin auf der Suche nach etwas mehr durchdacht und allgemein.
Meine Frage:
- Was ist die Allgemeine/praktische Art und Weise zu generieren, Django/Schienen-Typ Schnecken in Java?
InformationsquelleAutor der Frage knorv | 2009-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalisieren Ihren string kanonische ZERLEGUNG:
Dies ist immer noch eine ziemlich naive Prozess, aber. Es ist nicht etwas zu tun für s-sharp (ß - verwendet im deutschen), oder alle nicht-Latein-basierten Alphabete (Griechisch, Kyrillisch, CJK, etc).
Seien Sie vorsichtig beim ändern der Fall eines string. Oberen und unteren Gehäuse, dessen Form abhängig sind Alphabete. In Türkisch, ist die Aktivierung von U+0069 (ich) U+0130 (ich), nicht U+0049 (ich), so riskieren Sie die Einführung eines nicht-latin1-Zeichen wieder in Ihren Text, wenn Sie
String.toLowerCase()
bei einem türkischen Gebietsschema.InformationsquelleAutor der Antwort McDowell
http://search.maven.org/#search/ga/1/slugify
Und hier das GitHub-repository, um einen Blick auf den code und seine Verwendung:
https://github.com/slugify/slugify
InformationsquelleAutor der Antwort dtrunk
Präsenzbibliothek, für andere Sprachen: http://www.codecodex.com/wiki/Generate_a_url_slug
InformationsquelleAutor der Antwort Rafael Sanches
Habe ich erweiterte die Antwort von @McDowell gehören Flucht Satzzeichen wie Bindestriche und entfernen Sie doppelte und führende/nachfolgende Bindestriche.
InformationsquelleAutor der Antwort Mike Godin
Den Vorschlag McDowel fast funktioniert, aber in Fällen wie diesem
Hello World !!
es gibthello-world--
(Hinweis: die--
am Ende der Zeichenfolge) anstelle vonhello-world
.Einer festen version:
InformationsquelleAutor der Antwort Mariano Ruiz