ich möchte eine Liste von Strings sortieren und dabei die deutschen
Umlaute richtig einsortieren, d.h. 'ä' wird als 'ae' einsortiert, 'ß'
als 'ss' usw.
Gibt es einen Comparator, der das - vielleicht mit Hilfe einer
Locale-Klasse oder so - schon kann, oder muss ich mir den selber schreiben?
Meine einzige Idee dazu war, beim Vergleich die Umlaute durch ihre
Entsprechungen zu ersetzen, aber ich hoffe, es gibt da schon was Fertiges...
Gruß und Vielen Dank,
Jens
ersteres. @see java.text.Collator
Hth, Thomas.
Jens Riedel <Jen...@gmx.de> wrote:
> ich möchte eine Liste von Strings sortieren und dabei die deutschen
> Umlaute richtig einsortieren, d.h. 'ä' wird als 'ae' einsortiert, 'ß'
> als 'ss' usw.
Schau Dir mal (in Ruhe) i18n an. Das Tutorial ist echt gut und Du findest
da alles (und etwas mehr) was Du brauchst.
> Gibt es einen Comparator, der das - vielleicht mit Hilfe einer
> Locale-Klasse oder so - schon kann, oder muss ich mir den selber schreiben?
Da gibt es die verschiedensten Wege, das zu erreichen. Daher mein Vorschlag,
i18n mal anzuschauen.
> Meine einzige Idee dazu war, beim Vergleich die Umlaute durch ihre
> Entsprechungen zu ersetzen, aber ich hoffe, es gibt da schon was Fertiges...
Ja, die Sortierungsfunktionen in i18n.
Gruss, Kurt
--
MBTronik Kurt Harders Modellbahnelektronik
mailto:in...@mbtronik.de
Modellbahnelektronik: http://www.mbtronik.de
privat: http://www.kharders.de
> ersteres. @see java.text.Collator
Hallo Thomas,
vielen Dank für den Tip, das klappt damit schon ganz gut.
Verstehe ich das richtig, dass wenn ich 'ä' hinter 'ae' einsortieren
möchte, folgendes definieren muss?
String deRules =
(" < AA,Aa,aA,aa < AB,Ab,aB,ab < AC,Ac,aC,ac < AD,Ad,aD,ad " +
" < AE,Ae,aE,ae < Ä,ä < A,a < B,b < C,c ...."
Oder geht das einfacher? Für ä,ö und ü ist das ja noch o.k., blöd wird
es bei 'ß', dass hinter 'ss' stehen soll...
Gruß,
Jens
Ich hab mit der Klasse noch nicht gearbeitet. Ich weiss nur, dass man
mit dieser Klasse irgendwie lokalisiert Strings sortieren kann. Also
siehe Doku/google/etc..
Thomas.
> Schau Dir mal (in Ruhe) i18n an. Das Tutorial ist echt gut und Du findest
> da alles (und etwas mehr) was Du brauchst.
>
> Da gibt es die verschiedensten Wege, das zu erreichen. Daher mein Vorschlag,
> i18n mal anzuschauen.
>
> Ja, die Sortierungsfunktionen in i18n.
Hallo Kurt,
vielen Dank für den Tip. Vorher werde ich aber noch mal schauen, ob i18n
nicht vielleicht auch was hergibt. ;-)
Gruß,
Jens
Jens Riedel schrieb:
> Thomas Bensler schrieb:
> ich möchte eine Liste von Strings sortieren und dabei die deutschen
> Umlaute richtig einsortieren, d.h. 'ä' wird als 'ae' einsortiert, 'ß'
> als 'ss' usw.
[...]
> vielen Dank für den Tip, das klappt damit schon ganz gut.
> Verstehe ich das richtig, dass wenn ich 'ä' hinter 'ae' einsortieren
> möchte, folgendes definieren muss?
>
> String deRules =
> (" < AA,Aa,aA,aa < AB,Ab,aB,ab < AC,Ac,aC,ac < AD,Ad,aD,ad "
> + " < AE,Ae,aE,ae < Ä,ä < A,a < B,b < C,c ...."
>
> Oder geht das einfacher? Für ä,ö und ü ist das ja noch o.k., blöd wird
> es bei 'ß', dass hinter 'ss' stehen soll...
Dir ist bewußt, daß dies *nicht* die Art ist, wie im Deutschen die
Umlaute einsortiert werden? Was Du da machst, ist irgend etwas eigenes,
im Ergebnis jedenfalls falsch.
Im Deutschen werden die Umlaute genau wie die jeweiligen entsprechenden
Vokale behandelt und nicht etwa wie »ae«. Also andermal, ändern,
andernfalls.
Bis denn
Hauke Ingmar
Zuerst als Hinweis: ä wird laut offiziellen Regeln
nicht wie ae, sondern wir a einsortiert (nur wenn der
Rest gleich ist, dahinter), analog für die anderen
Umlaute.
Ansonsten solltest du dir wirklich, wie Kurt sagte die
i18n-Funktionen ansehen.
Dann kannst du einfach
Collator.getInstance()
(für die Standard-Locale) oder
Collator.getInstance(Locale.GERMANY)
benutzen.
(Ich habe jetzt nicht überprüft, ob der die
ä=a-Regel einhält.)
Paul
Paul Ebermann <Paul-E...@gmx.de> wrote:
> Ansonsten solltest du dir wirklich, wie Kurt sagte die
> i18n-Funktionen ansehen.
> Dann kannst du einfach
> Collator.getInstance()
> (für die Standard-Locale) oder
> Collator.getInstance(Locale.GERMANY)
> benutzen.
> (Ich habe jetzt nicht überprüft, ob der die
> ä=a-Regel einhält.)
Ich habe es jetzt nicht mehr parat, wie die reale Implementierung
aussah, aber allein die Erlaeuterungen zur Sortierung von Umlauten,
Akzenten (grave, egu, circonflex) waren einfach super und spannend.
> Dann kannst du einfach
>
> Collator.getInstance()
>
> (für die Standard-Locale) oder
>
> Collator.getInstance(Locale.GERMANY)
>
> benutzen.
> (Ich habe jetzt nicht überprüft, ob der die
> ä=a-Regel einhält.)
Hallo Paul,
ich habe es ausprobiert, anscheinend sind alle relevanten Regeln enthalten.
Gruß,
Jens