tuple_strrstr
— Rückwärtssuchen nach einem Teilstring in einem Tupel von Strings.
tuple_strrstr
sucht in dem Eingabetupel String
nach den in
dem Eingabetupel ToFind
definierten Strings. Beide Eingabetupel
müssen durchgehend aus Strings bestehen. Anderenfalls bricht
tuple_strrstr
mit einem entsprechenden Fehler ab. Besteht
String
nur aus einem einzigen String, so werden in diesem alle in
ToFind
definierten Strings gesucht. Das Ausgabetupel besteht also in
diesem Fall aus genauso vielen Elementen wie das Eingabetupel
ToFind
. Die Suche geschieht rückwärts also vom Ende zum Anfang des
zu untersuchenden Strings. Ist die Suche nach einem String erfolgreich, so
wird die Position, an der der gesuchte String innerhalb des untersuchten
Strings das erste Mal gefunden wurde, in dem Ausgabetupel Position
zurückgegeben (die Position innerhalb eines Strings wird beginnend mit 0
gezählt). Wurde ein String 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, der erste String von ToFind
wird in dem ersten String von
String
, der zweite von ToFind
im zweiten von
String
gesucht und so weiter. Die einzelnen Elemente des
Ausgabetupels enthalten dann das Resultat der elementweisen Suche. Besteht
ToFind
nur aus einem String, so wird dieser String 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_strrstr
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_strrstr
,
die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden
kann:
Position := strrstr(String, ToFind)
String
(input_control) string(-array) →
(string)
Eingabetupel mit zu untersuchenden Strings.
ToFind
(input_control) string(-array) →
(string)
Eingabetupel mit zu suchenden Teilstrings.
Position
(output_control) integer(-array) →
(integer)
Positionen der gesuchten Strings in den untersuchten Strings.
tuple_strstr
,
tuple_strlen
,
tuple_strchr
,
tuple_strrchr
,
tuple_substr
,
tuple_str_first_n
,
tuple_str_last_n
,
tuple_split
,
tuple_environment
Foundation