2013-06-25 17 views
12

Ich brauche Funktionen, um zwischen einem Zeichen (z. B. 'α') und seinem vollständigen Unicode-Namen (z. B. "GREEK SMALL LETTER ALPHA") in beide Richtungen zu konvertieren.Wie konvertiert man ein Zeichen in seinen vollständigen Unicode-Namen?

Die Lösung, die ich gefunden habe, ist eine Suche im offiziellen Unicode-Standard online verfügbar: http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt, oder besser gesagt, in seiner zwischengespeicherten lokalen Kopie, möglicherweise im Voraus in eine geeignete Sammlung umgewandelt, um die Lookup-Leistung zu verbessern).

Gibt es eine einfachere Möglichkeit, diese Konvertierungen durchzuführen? Ich würde eine Lösung in C# bevorzugen, aber auch Lösungen in anderen Sprachen, die an C#/.NET angepasst werden können, sind ebenfalls willkommen. Vielen Dank!

+0

Die Lösung, die Sie haben, klingt für mich vollkommen in Ordnung, um ehrlich zu sein. Das Dateiformat sieht ziemlich einfach aus, und ich glaube nicht, dass es noch etwas im Framework gibt. –

+0

Der Link, auf den Sie zeigen, ist nur wie die erste Million und sollte leicht in ein Dictionary passen. Das Zeichen sollte eindeutig sein, also verwenden Sie es als Schlüssel in einem Dictionary. Wie für die Beschreibung - wenn es einzigartig ist, könnte ein zweites reverse-Wörterbuch für Geschwindigkeit enthalten, aber das wird den Speicher verdoppeln. – Paparazzi

+0

@Blam "nur wie die erste 1 Million" (genauer gesagt 1114109) ist ** alle von ihnen **. –

Antwort

0

Wenn Sie die Unicode-Namenstabelle nicht im Speicher behalten möchten, bereiten Sie die Textdatei vor, wobei der Offset des Unicode-Werts multipliziert mit dem maximalen Unicode-Längennamen auf den Unicode-Namen zeigt. Für maximal 4 Bytes Länge wird es nicht mehr als ein paar Megabyte sein. Wenn Sie eine kompaktere Implementierung wünschen, dann können Sie die Gruppenoffset-Adresse in der Datei zu den Unicode-Namen am Anfang der Datei, die durch den Unicode-Wert indiziert wird, dann eine kompaktere Namenstabelle genießen. aber Sie müssen solche Datei vorbereiten, obwohl es nicht schwierig ist.

+0

Voraussetzung sind beide Richtungen. – Paparazzi

+0

Ja, Sie schreiben, wir können eine andere Datei mit Indice erstellen, die den Hash-Werten von Unicode-Namen entspricht :-). Obwohl die Lösung, auf die im Kommentar zur Frage Bezug genommen wird, eine fertige Wörterbuch-Bibliothek verwendet, die natürlich besser ist, als das Fahrrad von Grund auf neu zu machen. aber ich genieße immer Kunst des Datenstrukturdesigns. –

Verwandte Themen