Wie listet man das lokalisierte Alphabet in C # auf?

8

Zunächst ist dies kein Duplikat von: Schnellste Möglichkeit, das Alphabet aufzuzählen

Weil ich alle Buchstaben des Alphabets einer arbiträren (variablen) Sprache erhalten muss, und zwar in der richtigen Reihenfolge.

Wie kann ich das tun, ohne das Alphabet jeder möglichen Kultur / Sprache zu kennen? System.Gobalization.Cultureinfo enthält beispielsweise Informationen zum Datumsformat und eine Sortiermethode sowie Informationen zur Codepage. Aber keine Informationen über das Alphabet selbst. Weiter 'A' bis 'Z' Reihenfolge Iteration nicht tun, weil Deutsch zum Beispiel Zeichen wie ÄÖÜ hat, die nach 'Z' in der Nummerierung der Codepage sind, aber nach aou beim Sortieren folgen.

Kann ich irgendwie die Codepages verwenden, um alle Zeichen zu erhalten und sie irgendwie zu sortieren? Mit "alle Charaktere" meine ich alle Buchstaben, einschließlich Zahlen, aber keine Satzzeichen. Und möglicherweise nur obere XOR-Kleinbuchstaben.

    
Stefan Steiger 15.04.2011, 12:25
quelle

3 Antworten

8

Zunächst möchte ich sagen, dass ich dem zustimme, was alle anderen sagen. Würden Sie das Zeichen é als gültiges amerikanisches englisches Zeichen betrachten? Es wird ziemlich oft verwendet, aber es ist nicht im normalen "a-z".

Das heißt, hier ist ein Code (VB2010). Dieser Code ruft die nicht verwaltete Funktion GetLocaleInfoW auf und fragt nach einer LOCALESIGNATURE -Struktur, die Unicode-Codepunktbereiche enthält. Diese Information wird verwendet, um zu bestimmen, welche Bereiche für eine bestimmte Schriftart benötigt werden.

Die Char -Struktur unterstützt nicht alle Unicode-Codepunkte, daher gibt die Funktion String s zurück. Suchen Sie nach " Ersatzpaar " am Ende dieses Links für weitere Informationen.

Dieser Code tut leider nicht alles, was Sie wollen. Zum Beispiel hat die oft zitierte finnische Sprache nicht den Buchstaben W , aber in Windows existiert das Zeichen im gültigen Codepunkt-Bereich. Ich weiß nicht, wie ich darauf eingehen soll.

%Vor%     
Chris Haas 15.04.2011, 15:37
quelle
3

Ich denke nicht, dass das .Net-Framework das bietet, was Sie wollen. Vor allem haben nicht alle Sprachen Alphabete im westlichen Sinne des Wortes. Zweitens, selbst wenn Sie Ihre Abdeckung auf Sprachen mit Alphabeten beschränken, wird das Durchlaufen der Inhalte einer Codepage nicht funktionieren, da viele Codepages mehrere Sprachen umfassen (z. B. CP 1252 deckt die wichtigsten westeuropäischen Sprachen ab). Drittens haben einige der zuletzt unterstützten Sprachen unter Windows keine Codeseiten. Ich glaube nicht, dass es eine Lösung außerhalb der Alphabete der Sprachen gibt, an denen Sie interessiert sind.

Wenn Sie vielleicht erklären, was Sie erreichen möchten, könnte eine bessere Lösung vorgeschlagen werden.

    
Paul Lalonde 15.04.2011 12:54
quelle
3

Wenn Sie ein Alphabet aufzählen möchten, um einen Index zu erstellen, können Sie Windows.Globalization.Collation.CharacterGroupings

    
Eric MSFT 07.03.2013 21:51
quelle