String-Operationen

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren für String-Operationen.

Allgemeine Information

Die HALCON-Bibliothek kodiert Strings standardmäßig in UTF-8.

UTF-8 ist eine Kodierung für Unicode-Zeichen, die alle Unicode-Codepoints mit einem bis vier Bytes kodieren kann. „Unicode“ bezeichnet den Zeichensatz, mit dem jedem Zeichen eines Strings ein Codepoint (z.B. 'U+0041' für 'A') zugewiesen werden kann. Mit UTF-8 werden dann die Unicode-Codepoints in Binärdaten übersetzt. Der Speicherbedarf für alle ASCII-Zeichen beträgt in der Regel 1 Byte. Bestimmte Zeichen wie beispielsweise deutsche Umlaute, oder griechische und kyrillische Zeichen erfordern 2 Bytes. Asiatische Zeichen belegen bis zu 4 Bytes je Zeichen.

Die HALCON-String-Operatoren arbeiten standardmäßig auf Basis von Unicode-Codepoints. D.h., beim Zugriff auf ein Zeichen eines Strings wird immer der entsprechende Unicode-Codepoint des Zeichens zurückgegeben, unabhängig davon, wie viele Bytes benötigt werden, um den Codepoint in UTF-8 darzustellen. Somit können Multi-Byte Zeichen, wie asiatische Zeichen oder deutsche Umlaute auf allen Systemen einheitlich übersetzt werden. Bitte beachten Sie, dass der Unicode-Standard es auch erlaubt, druckbare Zeichen aus mehreren Codepoints zusammenzusetzen (mit Hilfe sogenannter „Combining Diacritical Marks“). Dies wird derzeit von HALCON nicht vollständig unterstützt: in HALCON werden die Codepoints separat verarbeitet, und beim Vergleich von Strings werden äquivalente Zeichen nicht gleich gesetzt, wenn sie mit unterschiedlichen Codepoints codiert sind.

Sollte es beim Ausführen von alten Programmen Kompatibilitäts-Probleme geben, kann die Stringkodierung der HALCON-Bibliothek von 'utf8'"utf8""utf8""utf8""utf8" auf 'locale'"locale""locale""locale""locale" gesetzt werden (Legacy-Modus). Dann werden Strings abhängig von der Ländereinstellung gespeichert und die String-Operatoren arbeiten – wie in früheren HALCON-Versionen – nicht zeichen- sondern byteweise. Sollte auch im UTF-8-Modus eine byteweise Verarbeitung von Zeichen nötig sein, kann mit dem Operator set_systemset_systemSetSystemSetSystemSetSystem die Option 'tuple_string_operator_mode'"tuple_string_operator_mode""tuple_string_operator_mode""tuple_string_operator_mode""tuple_string_operator_mode" von 'codepoint'"codepoint""codepoint""codepoint""codepoint" auf 'byte'"byte""byte""byte""byte" gesetzt werden. Dann arbeiten die String-Operatoren nicht mehr auf der Basis von Codepoints. Die Bytefolge eines Strings kann beispielsweise zum Debugging interessant sein.


Liste der Operatoren

tuple_environmentTupleEnvironmentTupleEnvironmenttuple_environment
Einlesen einer oder mehrerer Umgebungsvariablen.
tuple_regexp_matchTupleRegexpMatchTupleRegexpMatchtuple_regexp_match
Extrahieren von Teilen aus Zeichenketten mit Hilfe von regulären Ausdrücken.
tuple_regexp_replaceTupleRegexpReplaceTupleRegexpReplacetuple_regexp_replace
Ersetzen eines Teils einer Zeichenkette mit Hilfe von regulären Ausdrücken.
tuple_regexp_selectTupleRegexpSelectTupleRegexpSelecttuple_regexp_select
Auswählen von Tupelelementen, die einem regulären Ausdruck entsprechen.
tuple_regexp_testTupleRegexpTestTupleRegexpTesttuple_regexp_test
Testen, ob eine Zeichenkette einem regulären Ausdruck entspricht.
tuple_splitTupleSplitTupleSplittuple_split
Aufteilen von Strings in mehrere Strings mittels Trennsymbolen.
tuple_str_first_nTupleStrFirstNTupleStrFirstNtuple_str_first_n
Ausschneiden aller Zeichen bis zur Position „n“ aus einem Stringtupel.
tuple_str_last_nTupleStrLastNTupleStrLastNtuple_str_last_n
Ausschneiden aller Zeichen ab der Position „n“ aus einem Stringtupel.
tuple_strchrTupleStrchrTupleStrchrtuple_strchr
Vorwärtssuchen nach einem Zeichen in einem Tupel von Strings.
tuple_strlenTupleStrlenTupleStrlentuple_strlen
Berechnen der Länge der einzelnen Strings eines Stringtupels.
tuple_strrchrTupleStrrchrTupleStrrchrtuple_strrchr
Rückwärtssuchen nach einem Zeichen in einem Tupel von Strings.
tuple_strrstrTupleStrrstrTupleStrrstrtuple_strrstr
Rückwärtssuchen nach einem Teilstring in einem Tupel von Strings.
tuple_strstrTupleStrstrTupleStrstrtuple_strstr
Vorwärtssuchen nach einem Teilstring in einem Tupel von Strings.
tuple_substrTupleSubstrTupleSubstrtuple_substr
Ausschneiden von Zeichen ab Position „n1“ bis einschließlich „n2“ aus einem Stringtupel.