Wir haben Zeichenklassen in .NET bereits als RegexElemente kennen gelernt. Dort wurde allerdings nur das Konzept vor gestellt, hier beschäftigen wir uns nun mit den 'blutigen Details'.
Um die explizite Angabe von allen erlaubten Zeichen in einer Zeichenklasse zu vermeiden können wir kontinuierliche Folgen spezifizieren. Statt [abcdef] können wir [a-f] schreiben. Dabei sind allerdings einige Dinge zu beachten:
Einige häufige Kürzel für bestimmte Zeichenklassen wie 'nur Ziffern' haben wir bereits kennengelernt. Bisher haben wir uns aber nur mit ASCII beschäftigt. Wie sieht es nun mit 'moderneren' Zeichensätzen (unicode) aus? Jenseits von 7-Bit ASCII gibt es ja ein ganzes Universum an Zeichen die wir bisher nicht berücksichtigt haben. Einzelne Zeichen lassen sich ja leicht über ihren numerischen Code ansprechen wie wir wissen. Schön wäre es jetzt wenn man analog zu den bisher betrachteten Kürzeln für 'Leerzeichen', 'Ziffern', 'Alphanumerische Zeichen' usw. auch für solche Zeichen jenseits von ASCII Kürzel hätte...
.NET bietet netterweise derartige Kürzel an:
\p{Name_der_Zeichenklasse} und
\P{Name_der_Zeichenklasse} als die Verneinung dazu.
Name_der_Zeichenklasse entspricht dabei einer Unicode-Kategorie (Name_der_Zeichenklasse, offizieller Unicodename, Erklärung):
Buchstaben:
Ll ... Letter, lowercase - Kleinbuchstabe
Lm ... Letter, modifier - verändert das vorhergehende Zeichen
Lo ... Letter, other - Buchstabe der weder Gross- noch Klein- noch Titelbuchstabe noch Modifikator ist (Verwirrt?)
Lt ... Letter, titlecase - Titelbuchstaben (Initiale)
Lu ... Letter, uppercase - Grossbuchstaben
Ziffern:
Nd ... Number, decimal digit - Dezimalziffer
Nl ... Number, letter - Ziffer die durch Buchstaben dargestellt ist. Z.B. Römische Ziffern
No ... Number, other - Zahl die keine Ziffer ist. Z.B. das '1/2'-zeichen
Satzzeichen:
Pe ... Punctuation, close - Abschliessendes Satzzeichen bei gepaarten Zeichen (Klammern usw.)
Pc ... Punctuation, connector - Satzzeichen das zwei Zeichen verbindet
Pd ... Punctuation, dash - Bindestrich, Trennstrich
Pf ... Punctuation, final quote - abschliessendes Anführungszeichen
Pi ... Punctuation, initial quote - Anfängliches Anführungszeichen
Ps ... Punctuation, open - Anfängliches gepaartes Zeichen (Klammern usw.)
Po ... Punctuation, other - Satzzeichen das in keine der anderen Satzzeichenklassen fällt
Symbole:
Sc ... Symbol, currency - Währungszeichen
Sm ... Symbol, math - Mathematische Zeichen
Sk ... Symbol, modifier - Beeinflusst die umgebenden Zeichen. Z.B. Bruchstrich
Sonstiges:
Cc ... Other, control - Steuerzeichen
Cf ... Other, format - nichtdruckendes Zeichen das die Formatierung beeinflusst
Cn ... Other, not assigned - fällt in keine der Unicode-kategorien
Co ... Other, private use - zu privater Verwendung
Cs ... Other, surrogate - Surrogatzeichen
Me ... Mark, enclosing - eine Umschliessung mehrerer Zeichen die selbst keines ist. Typisch Unicode.
Mn ... Mark, nonspacing - nicht weiterrückendes Zeichen, das ein anderes Zeichen modifiziert
Ms ... Mark, spacing combining - beeinflusst die Weite eines Zeichens
Zl ... Separator, line - Zeilentrenner
Zp ... Separator, paragraph - Absatztrenner
Zs ... Separator, space - Zeichentrenner, aber kein Steuerzeichen
Zur Verwendung dieser Zeichenklassen ist System.Globalization notwendig.
Erklärungen zu dem Unicode-fachchinesisch finden sich auf der entsprechenden Website http://www.unicode.org