n.d. parker: Sortierung von ungarischen Vokalen

Beitrag lesen

Moin,

[...]

A Á B C D E É F G H I Í ... N O Ó Ö Õ P usw.
Die sort-Funktion sortiert diese langen Vokale hinter das Z, was der ANSI-Sortierung entspricht. :(
Wie kann man es nun bewerkstelligen, daß die Sortierreihenfolge genau der entspricht, die oben beschrieben habe?

wenn der Rechner "ungarisch kann", sollte 'use locale;' das Erwuenschte bewirken.

Aber ich persoenlich traue 'use locale' nicht ueber den Weg, das ist mir zu abhaengig vom System.

Wie sind die Zeichen codiert? Sind die alle im ISO-8859-1 zu finden? Unicode?

Mir fallen grundsaetzlich zwei Moeglichkeiten ein:

1.)
Man koennte sich ein Array bauen, in dem in der Wunschreihenfolge die Zeichen (in der entsprechenden Codierung, UTF-8 vielleicht) stehen.
Die Vergleichsfunktion nimmt sich dann die Strings auseinander und vergleicht sie entsprechend dem Array.

2.) 1.) duerfte sehr performancelastig sein, gerade bei groesseren zu sortierenden Listen.
Man benutzt das in 1.) gebaute Array und baut sich einen Hash, der als Schluessel die zu sortierende Liste enthaelt und als Werte die Schluesselstrings mutiert [1]. Also so umgebaut, dass die ASCII-Vergleichsfunktion, die dann auf die Werte angewandt wird, das richtige Ergebnis liefert.
Das klingt etwas komplizierter als 1.). Ist es auch (ein bisschen)[2], duerfte aber letztendlich bedeutend effektiver sein.

[1] mir faellt gerade kein besseres Wort ein ;)

[2] das ist die Grundidee, mit einer genauen Implementierung muesste ich mich noch beschaeftigen, das Thema interessiert mich jedenfalls ungemein ;)

Viele Gruesse,

n.d.p.