tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr (Operator)

Name

tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr — Vorwärtssuchen nach einem Teilstring in einem Tupel von Strings.

Signatur

tuple_strstr( : : String, ToFind : Position)

Herror tuple_strstr(const char* String, const char* ToFind, Hlong* Position)

Herror T_tuple_strstr(const Htuple String, const Htuple ToFind, Htuple* Position)

void TupleStrstr(const HTuple& String, const HTuple& ToFind, HTuple* Position)

HTuple HTuple::TupleStrstr(const HTuple& ToFind) const

static void HOperatorSet.TupleStrstr(HTuple stringVal, HTuple toFind, out HTuple position)

HTuple HTuple.TupleStrstr(HTuple toFind)

def tuple_strstr(string: MaybeSequence[str], to_find: MaybeSequence[str]) -> Sequence[int]

def tuple_strstr_s(string: MaybeSequence[str], to_find: MaybeSequence[str]) -> int

Beschreibung

tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr sucht in dem Eingabetupel StringStringStringstringValstring nach den in dem Eingabetupel ToFindToFindToFindtoFindto_find definierten Strings. Beide Eingabetupel müssen durchgehend aus Strings bestehen. Anderenfalls bricht tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr mit einem entsprechenden Fehler ab. Besteht StringStringStringstringValstring nur aus einem einzigen String, so werden in diesem alle in ToFindToFindToFindtoFindto_find definierten Strings gesucht. Das Ausgabetupel besteht also in diesem Fall aus genauso vielen Elementen wie das Eingabetupel ToFindToFindToFindtoFindto_find. 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 PositionPositionPositionpositionposition zurückgegeben (die Position 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 StringStringStringstringValstring und ToFindToFindToFindtoFindto_find gleich viele Elemente, so werden sie elementweise bearbeitet, das heißt, der erste String von ToFindToFindToFindtoFindto_find wird in dem ersten String von StringStringStringstringValstring, der zweite von ToFindToFindToFindtoFindto_find im zweiten von StringStringStringstringValstring gesucht und so weiter. Die einzelnen Elemente des Ausgabetupels enthalten dann das Resultat der elementweisen Suche. Besteht ToFindToFindToFindtoFindto_find nur aus einem String, so wird dieser String in allen Strings des Eingabetupels StringStringStringstringValstring gesucht. Das Ausgabetupel PositionPositionPositionpositionposition besitzt dann also genauso viele Elemente wie das Eingabetupel StringStringStringstringValstring. Weisen die beiden Eingabetupel StringStringStringstringValstring und ToFindToFindToFindtoFindto_find eine unterschiedliche Anzahl an Elementen auf, die von 1 verschieden ist, so bricht tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr mit einem entsprechenden Fehler ab.

Falls eines oder beide der Eingabetupel leer sind, gibt der Operator ein leeres Tupel zurück.

Unicode Codepoints versus Bytes

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')set_system("tsp_tuple_string_operator_mode","byte")SetSystem("tsp_tuple_string_operator_mode","byte")SetSystem("tsp_tuple_string_operator_mode","byte")set_system("tsp_tuple_string_operator_mode","byte") in einen Byte-Modus umgeschaltet werden. Wenn 'filename_encoding'"filename_encoding""filename_encoding""filename_encoding""filename_encoding" auf 'locale'"locale""locale""locale""locale" gesetzt ist (legacy), verwendet dieser Operator immer den Byte-Modus.

Für allgemeine Informationen zu String-Operationen siehe auch Tupel / String-Operationen.

HDevelop Inline-Operation

HDevelop unterstützt eine Inline-Operation für tuple_strstrtuple_strstrTupleStrstrTupleStrstrtuple_strstr, die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden kann:

Position := strstr(String, ToFind)

Ausführungsinformationen

Parameter

StringStringStringstringValstring (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Eingabetupel mit zu untersuchenden Strings.

ToFindToFindToFindtoFindto_find (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Eingabetupel mit zu suchenden Teilstrings.

PositionPositionPositionpositionposition (output_control)  integer(-array) HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Positionen der gesuchten Strings in den untersuchten Strings.

Alternativen

tuple_strrstrtuple_strrstrTupleStrrstrTupleStrrstrtuple_strrstr, tuple_strlentuple_strlenTupleStrlenTupleStrlentuple_strlen, tuple_strchrtuple_strchrTupleStrchrTupleStrchrtuple_strchr, tuple_strrchrtuple_strrchrTupleStrrchrTupleStrrchrtuple_strrchr, tuple_substrtuple_substrTupleSubstrTupleSubstrtuple_substr, tuple_str_first_ntuple_str_first_nTupleStrFirstNTupleStrFirstNtuple_str_first_n, tuple_str_last_ntuple_str_last_nTupleStrLastNTupleStrLastNtuple_str_last_n, tuple_splittuple_splitTupleSplitTupleSplittuple_split, tuple_environmenttuple_environmentTupleEnvironmentTupleEnvironmenttuple_environment

Modul

Foundation