KlassenKlassen | | Operatoren

String-Operationen

Liste der Operatoren ↓

Dieses Kapitel beschreibt Operatoren für String-Operationen.

Allgemeine Information

HALCON speichert und verarbeitet Strings intern als Bytefolgen. Im Allgemeinen kümmert es sich nicht um die Semantik der einzelnen Zeichen. Dies kann zu überraschenden Ergebnissen führen, insbesondere wenn Multi-Byte Zeichen benutzt werden, welche in den meisten nicht-ASCII Zeichen aus asiatischen Encoding Tabellen und in UTF-8 üblich sind.

Als ein Beispiel für unerwartete Ergebnisse betrachten wir den Operator tuple_strlentuple_strlenTupleStrlenTupleStrlenTupleStrlen. Auf den ersten Blick könnte man erwarten, dass die Länge eines Strings immer der Anzahl der enthaltenen Zeichen entspricht. Tatsächlich ist das aber nur für Single-Byte Zeichen der Fall. Enthält ein String Multi-Byte Zeichen, entspricht die Länge des Strings der Anzahl der genutzten Bytes und ist somit größer als die Anzahl der Zeichen. Ein anderes Beispiel ist der Operator tuple_ordstuple_ordsTupleOrdsTupleOrdsTupleOrds, welcher ein Tuple von Strings in einen Tupel von Integerzahlen konvertiert. Wenn er mit Multi-Byte Zeichen aufgerufen wird, gibt er ein Ausgabetuple zurück, das mehr Elemente enthält als Zeichen des Eingabetuples. Somit kann die Zuordung zwischen Eingabezeichen und Ausgabezahlen schwierig sein.

Die benutzte Zeichenkodierung (natives Encoding) hängt von der Ländereinstellung (Locale) des benutzten Betriebssytems ab. Ein paar übliche Encodings sind die Zeichenumsetztabellen windows-1252 (CP1252, West Europa) und windows-31j (CP932, Japan) für Windows und ISO 8859-1 (latin-1, West Europa), ISO 8859-15 (latin-9, West Europa), shift-jis (Japan) oder UTF-8 für andere Systeme. D.h., selbst mit der gleichen Ländereinstellung muss das Encoding berücksichtigt werden, wenn Daten zwischen z.B. Windows und Linux ausgetauscht werden sollen.

Sollen Daten zwischen Systemen mit unterschiedlichem Encoding ausgetasucht werden, kann eine Konvertierung nötig sein. Es ist üblicherweise sicher, 7-Bit ASCII Zeichen zwischen 32 - 127 zu verwenden, allerdings weisen manche Encodings ausgewählten Zeichencodes nationale Varianten zu. Daher können nur die folgenden Zeichen wirklich als sicher für den Datenaustausch angesehen werden:

   A-Z a-z 0-9 ! " % & ' ( ) * + , - . / : ; < = > ? 


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.

KlassenKlassen | | Operatoren