tuple_strchr
— Vorwärtssuchen nach einem Zeichen in einem Tupel von Strings.
tuple_strchr
sucht in dem Eingabetupel String
nach den in
dem Eingabetupel ToFind
definierten Zeichen. Beide Eingabetupel
müssen durchgehend aus Strings bestehen. Anderenfalls bricht
tuple_strchr
mit einem entsprechenden Fehler ab. Enthalten die
Strings von ToFind
mehr als ein Zeichen, so wird ausschließlich das
erste Zeichen in einem String berücksichtigt und alle folgenden Zeichen
ignoriert. Besteht String
nur aus einem einzigen String, so werden
in diesem alle in ToFind
definierten Zeichen gesucht. Das
Ausgabetupel besteht also in diesem Fall aus genauso vielen Elementen wie das
Eingabetupel ToFind
. Ist die Suche nach einem Zeichen erfolgreich,
so wird die Position (beginnend mit 0 für das erste Zeichen eines Strings),
an der das Zeichen das erste Mal innerhalb des untersuchten Strings gefunden
wurde, in dem Ausgabetupel Position
zurückgegeben. Wurde ein Zeichen
nicht gefunden, so wird für dessen Position der Wert -1 zurückgegeben.
Enthalten beide Eingabetupel String
und ToFind
gleich viele
Elemente, so werden sie elementweise bearbeitet, das heißt, das erste Zeichen
im ersten Element von ToFind
wird in dem ersten String von
String
, das erste Zeichen des zweiten ELements von ToFind
wird im zweiten String von String
gesucht und so weiter. Die
einzelnen Elemente des Ausgabetupels enthalten dann das Resultat der
elementweisen Suche. Besteht ToFind
nur aus einem Element, so wird
das dort definierte Zeichen in allen Strings des Eingabetupels
String
gesucht. Das Ausgabetupel Position
besitzt dann
also genauso viele Elemente wie das Eingabetupel String
. Weisen die
beiden Eingabetupel String
und ToFind
eine unterschiedliche
Anzahl an Elementen auf, die von 1 verschieden ist, so bricht
tuple_strchr
mit einem entsprechenden Fehler ab.
Falls eines oder beide der Eingabetupel leer sind, gibt der Operator ein leeres Tupel zurück.
Die Position bezieht sich auf Unicode Codepoints. Ein Codepoint kann
aus mehreren Bytes im UTF-8 String zusammengesetzt sein. Wenn die Position
sich auf die Bytes des Strings beziehen soll, kann dieser Operator mit
set_system('tsp_tuple_string_operator_mode', 'byte')
in einen
Byte-Modus umgeschaltet werden. Wenn 'filename_encoding' auf
'locale' gesetzt ist (legacy), verwendet dieser Operator immer den
Byte-Modus.
Für allgemeine Informationen zu String-Operationen siehe auch Tupel / String-Operationen.
HDevelop unterstützt eine Inline-Operation für tuple_strchr
,
die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden
kann:
Position := strchr(String, ToFind)
String
(input_control) string(-array) →
(string)
Eingabetupel mit zu untersuchenden Strings.
ToFind
(input_control) string(-array) →
(string)
Eingabetupel mit zu suchenden Zeichen.
Position
(output_control) integer(-array) →
(integer)
Positionen der gesuchten Zeichen in den untersuchten Strings.
tuple_strrchr
,
tuple_strstr
,
tuple_strrstr
,
tuple_strlen
,
tuple_substr
,
tuple_str_first_n
,
tuple_str_last_n
,
tuple_split
,
tuple_environment
Foundation