tuple_splittuple_splitTupleSplitTupleSplittuple_split (Operator)
Name
tuple_splittuple_splitTupleSplitTupleSplittuple_split — Aufteilen von Strings in mehrere Strings mittels Trennsymbolen.
Signatur
def tuple_split(string: MaybeSequence[str], separator: MaybeSequence[str]) -> Sequence[str]
def tuple_split_s(string: MaybeSequence[str], separator: MaybeSequence[str]) -> str
Beschreibung
tuple_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split sucht in den einzelnen Strings des Eingabetupels
StringStringStringStringstringValstring nach den Trennsymbolen, die in dem
Eingabetupel SeparatorSeparatorSeparatorSeparatorseparatorseparator definiert sind.
tuple_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split teilt dann die untersuchten Strings in die Teilstrings,
die durch die Trennsymbole separiert werden, und gibt diese in
SubstringsSubstringsSubstringsSubstringssubstringssubstrings zurück.
Das Verhalten hängt von der Länge der Eingabe-Tupel ab:
-
SeparatorSeparatorSeparatorSeparatorseparatorseparator enthält genau einen String:
Jeder String in StringStringStringStringstringValstring wird durch die Trennsymbole in
SeparatorSeparatorSeparatorSeparatorseparatorseparator aufgeteilt.
Z.B. sei StringStringStringStringstringValstring = ['alpha:1', 'beta:2', 'gamma:3']["alpha:1", "beta:2", "gamma:3"]["alpha:1", "beta:2", "gamma:3"]["alpha:1", "beta:2", "gamma:3"]["alpha:1", "beta:2", "gamma:3"]["alpha:1", "beta:2", "gamma:3"]
und SeparatorSeparatorSeparatorSeparatorseparatorseparator = ['a:']["a:"]["a:"]["a:"]["a:"]["a:"].
Dann gibt der Operator das Ausgabetupel SubstringsSubstringsSubstringsSubstringssubstringssubstrings =
['lph', '1', 'bet', '2', 'g', 'mm', '3']["lph", "1", "bet", "2", "g", "mm", "3"]["lph", "1", "bet", "2", "g", "mm", "3"]["lph", "1", "bet", "2", "g", "mm", "3"]["lph", "1", "bet", "2", "g", "mm", "3"]["lph", "1", "bet", "2", "g", "mm", "3"] zurück.
-
StringStringStringStringstringValstring enthält genau einen String:
Der einzelne String wird je Element des Tupels SeparatorSeparatorSeparatorSeparatorseparatorseparator
aufgeteilt.
Z.B. sei StringStringStringStringstringValstring = ['alpha:1 beta:2 gamma:3']["alpha:1 beta:2 gamma:3"]["alpha:1 beta:2 gamma:3"]["alpha:1 beta:2 gamma:3"]["alpha:1 beta:2 gamma:3"]["alpha:1 beta:2 gamma:3"]
und SeparatorSeparatorSeparatorSeparatorseparatorseparator = [':', '123'][":", "123"][":", "123"][":", "123"][":", "123"][":", "123"].
Dann besteht das Ausgabetupel SubstringsSubstringsSubstringsSubstringssubstringssubstrings aus den Teilstrings
'alpha'"alpha""alpha""alpha""alpha""alpha", '1'"1""1""1""1""1", 'beta'"beta""beta""beta""beta""beta", '2'"2""2""2""2""2",
'gamma'"gamma""gamma""gamma""gamma""gamma" und '3'"3""3""3""3""3" aufgrund der Trennung durch das erste
Element in SeparatorSeparatorSeparatorSeparatorseparatorseparator (':'":"":"":"":"":")
sowie aus den Teilstrings 'alpha:'"alpha:""alpha:""alpha:""alpha:""alpha:", 'beta:'"beta:""beta:""beta:""beta:""beta:" und
'gamma:'"gamma:""gamma:""gamma:""gamma:""gamma:" aufgrund der Trennung durch das zweite Element in
SeparatorSeparatorSeparatorSeparatorseparatorseparator ('123'"123""123""123""123""123").
-
Beide Tupel beinhalten die selbe Anzahl Strings:
Die Suche geschieht elementweise. Das heißt, der erste
String von StringStringStringStringstringValstring wird gemäß den Trennsymbolen des ersten Strings
von SeparatorSeparatorSeparatorSeparatorseparatorseparator aufgeteilt, der zweite String von StringStringStringStringstringValstring
wird gemäß den Trennsymbolen des zweiten Strings von SeparatorSeparatorSeparatorSeparatorseparatorseparator
aufgeteilt und so weiter.
-
Eines oder beide der Eingabetupel sind leer:
Ein leeres Tupel wird zurück gegeben.
Anmerkungen zum Parameter SeparatorSeparatorSeparatorSeparatorseparatorseparator:
Enthalten die Strings von SeparatorSeparatorSeparatorSeparatorseparatorseparator mehr als ein Zeichen, so werden
alle in einem String enthaltenen Zeichen als Trennsymbole interpretiert
(siehe das oben gegebene Beispiel).
Folgen in einem String aus StringStringStringStringstringValstring mehrere Trennsymbole direkt
einander, so werden diese wie ein einzelnes Trennsymbol behandelt.
Trennsymbole am Anfang und am Ende von StringStringStringStringstringValstring führen nicht zu
einem leeren Teilstring.
Es gilt zu beachten, dass beide Eingabetupel (StringStringStringStringstringValstring und
SeparatorSeparatorSeparatorSeparatorseparatorseparator) ausschließlich aus Strings bestehen müssen.
Anderenfalls bricht tuple_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split mit einem entsprechenden Fehler ab.
Weisen die beiden Eingabetupel eine unterschiedliche Anzahl an Elementen
auf, die von 1 verschieden ist, so bricht tuple_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split mit einem
entsprechenden Fehler ab.
Unicode Codepoints versus Bytes
Die Trennzeichen werden als Unicode Codepoints behandelt. Ein Codepoint kann
aus mehreren Bytes im UTF-8 String zusammengesetzt sein. Wenn die
Trennzeichen als einzelne Bytes behandelt werden sollen,
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")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""filename_encoding" auf
'locale'"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_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split,
die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden
kann:
Substrings := split(String, Separator)
Ausführungsinformationen
- Multithreading-Typ: independent (läuft parallel auch zu exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
StringStringStringStringstringValstring (input_control) string(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Eingabetupel mit aufzuteilenden Strings.
SeparatorSeparatorSeparatorSeparatorseparatorseparator (input_control) string(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Eingabetupel mit Trennsymbolen.
SubstringsSubstringsSubstringsSubstringssubstringssubstrings (output_control) string(-array) → HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Teil-Strings nach Aufteilung mittels Trennsymbolen.
Alternativen
tuple_strstrtuple_strstrTupleStrstrTupleStrstrTupleStrstrtuple_strstr,
tuple_strrstrtuple_strrstrTupleStrrstrTupleStrrstrTupleStrrstrtuple_strrstr,
tuple_strchrtuple_strchrTupleStrchrTupleStrchrTupleStrchrtuple_strchr,
tuple_strrchrtuple_strrchrTupleStrrchrTupleStrrchrTupleStrrchrtuple_strrchr,
tuple_strlentuple_strlenTupleStrlenTupleStrlenTupleStrlentuple_strlen,
tuple_str_first_ntuple_str_first_nTupleStrFirstNTupleStrFirstNTupleStrFirstNtuple_str_first_n,
tuple_str_last_ntuple_str_last_nTupleStrLastNTupleStrLastNTupleStrLastNtuple_str_last_n,
tuple_environmenttuple_environmentTupleEnvironmentTupleEnvironmentTupleEnvironmenttuple_environment
Modul
Foundation