Unicode-Skripte

Neben den Unicode-Blöcken gibt es noch ein anderen Konzept, was vielleicht noch wichtiger als die Blöcke selbst sind: Unicode-Skripte. Darunter ist eine Gruppe von Zeichen für eine Sprache (in der Regel) zu verstehen.[1] Um den Unterschied zu Blöcken noch einmal zusammenzufassen:

· Ein Unicode-Block ist ein einfacher von-bis-Bereich, und Stellen können für die spätere Belegung leer sein.

· Ein Unicode-Skript enthält keine freien Positionen.

· Zeichen eines Unicode-Skripts können aus verschiedenen Unicode-Blöcken stammen.

· Zeichen aus einem Block können in verschiedenen Unicode-Skripten auftauchen.

Auch für Skripte bietet Java in der Klasse Character ein öffentliches statische innere Attribut, wobei das erst seit Java 7 existiert und Oracle hier ein moderneres enum gewählt hat. Character.UnicodeScript besteht aus einer Reihe von Konstanten, wobei die Namen nach ISO 15924[2] gewählt sind. Auch gibt es eine of(int) Methode um das Skript für ein Zeichen zu erfragen und ein UnicodeScript-Objekt kann über forName(String) mit einem Namen aufgebaut werden.

Auch wenn die Character und String-Klasse arm an weiteren Methoden zu den Unicode-Blöcken und Unicode-Skripten ist, gibt es doch Unterstützung von ganz anderer Stellen: Von den regulären Ausdrücken. Sie können testen, ob Zeichen in gewissen Skripten oder Blöcken sind und damit Zeichen in Teilstrings aufspüren, sie löschen und entfernen. (Wir springen nun thematisch etwas vor.) Die Syntax in den regulären Ausdrücken ist \p{script=Skriptname} bzw. \p{block=Blockname} (auch der Präfix Is oder In ist erlaubt ohne Nutzung vom script=/block=-Konstrukt). Achtung, Nicht alle Unicode-Skripts werden unterstützt!

Beispiel

Teste drei Zeichen, ob sie arabisch sind:

System.out.println( "ح".matches( "\\p{script=Arabic}" ) ); // true

System.out.println( "ح".matches( "\\p{IsArabic}" ) ); // true

System.out.println( "ש".matches( "\\p{IsArabic}" ) ); // false

System.out.println( "1".matches( "\\p{IsArabic}" ) ); // false


[1] Siehe auch http://www.unicode.org/reports/tr24/.

[2] http://unicode.org/iso15924/iso15924-codes.html

Ähnliche Beiträge

Veröffentlicht in Insel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert