Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Strings mit Umlauten sortieren

845 views
Skip to first unread message

Jens Riedel

unread,
Mar 19, 2003, 2:47:53 AM3/19/03
to
Hallo NG,

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

Thomas Bensler

unread,
Mar 19, 2003, 3:04:40 AM3/19/03
to
Jens Riedel wrote:
> Hallo NG,
>
> 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?

ersteres. @see java.text.Collator

Hth, Thomas.

Kurt Harders

unread,
Mar 19, 2003, 3:50:28 AM3/19/03
to
Hallo Jens,

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

Jens Riedel

unread,
Mar 19, 2003, 4:20:03 AM3/19/03
to
Thomas Bensler schrieb:

> 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

Thomas Bensler

unread,
Mar 19, 2003, 4:34:42 AM3/19/03
to

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.

Jens Riedel

unread,
Mar 19, 2003, 4:58:16 AM3/19/03
to
Kurt Harders schrieb:

> 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

Hauke Ingmar Schmidt

unread,
Mar 19, 2003, 6:59:31 AM3/19/03
to
Moin!

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

Paul Ebermann

unread,
Mar 19, 2003, 7:27:06 AM3/19/03
to
"Jens Riedel" skribis:

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

Kurt Harders

unread,
Mar 19, 2003, 2:54:47 PM3/19/03
to
Hallo 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.

Jens Riedel

unread,
Mar 20, 2003, 1:38:28 AM3/20/03
to
Paul Ebermann schrieb:

> 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

0 new messages