tuple_substrtuple_substrTupleSubstrTupleSubstrtuple_substr (Operator)

Name

tuple_substrtuple_substrTupleSubstrTupleSubstrtuple_substr — Cut characters from position “n1” through “n2” out of a string tuple.

Signature

tuple_substr( : : String, Position1, Position2 : Substring)

Herror tuple_substr(const char* String, const Hlong Position1, const Hlong Position2, char* Substring)

Herror T_tuple_substr(const Htuple String, const Htuple Position1, const Htuple Position2, Htuple* Substring)

void TupleSubstr(const HTuple& String, const HTuple& Position1, const HTuple& Position2, HTuple* Substring)

HTuple HTuple::TupleSubstr(const HTuple& Position1, const HTuple& Position2) const

static void HOperatorSet.TupleSubstr(HTuple stringVal, HTuple position1, HTuple position2, out HTuple substring)

HTuple HTuple.TupleSubstr(HTuple position1, HTuple position2)

def tuple_substr(string: MaybeSequence[str], position_1: MaybeSequence[Union[float, int]], position_2: MaybeSequence[Union[float, int]]) -> Sequence[str]

def tuple_substr_s(string: MaybeSequence[str], position_1: MaybeSequence[Union[float, int]], position_2: MaybeSequence[Union[float, int]]) -> str

Description

tuple_substrtuple_substrTupleSubstrTupleSubstrTupleSubstrtuple_substr cuts all characters from position “n1” through “n2” out of each string of the input tuple StringStringStringStringstringValstring and returns them as new strings in the output tuple SubstringSubstringSubstringSubstringsubstringsubstring. The positions “n1” and “n2” are determined by the second and third input tuples Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2. Their length has to be equal. If Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 only contain one element, this element defines for all strings of StringStringStringStringstringValstring “n1” and “n2”, respectively . If StringStringStringStringstringValstring, Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 have got the same number of elements, the first elements of Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 determine the start and end position for the first string of StringStringStringStringstringValstring. The second elements of Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 do so for the second string of StringStringStringStringstringValstring and so on. If Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 contain more than one element and StringStringStringStringstringValstring contains only one string, tuple_substrtuple_substrTupleSubstrTupleSubstrTupleSubstrtuple_substr cuts more than one substring out of this string. The elements of Position1Position1Position1Position1position1position_1 and Position2Position2Position2Position2position2position_2 then determine the start and end positions for these substrings. If all input tuples contain more than one element but differ in the number of elements, tuple_substrtuple_substrTupleSubstrTupleSubstrTupleSubstrtuple_substr returns an error.

If StringStringStringStringstringValstring is an empty tuple, the operator returns an empty tuple. If StringStringStringStringstringValstring is not empty and Position1Position1Position1Position1position1position_1 and/or Position2Position2Position2Position2position2position_2 are empty tuples, an exception is raised.

Unicode code points versus bytes

The positions reference Unicode code points. One Unicode code point may be composed of multiple bytes in the UTF-8 string. If the positions should reference the raw bytes of the string, this operator can be switched to byte mode with 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"). If 'filename_encoding'"filename_encoding""filename_encoding""filename_encoding""filename_encoding""filename_encoding" is set to 'locale'"locale""locale""locale""locale""locale" (legacy), this operator always uses the byte mode.

For general information about string operations see Tuple / String Operations.

HDevelop In-line Operation

HDevelop provides an in-line operation for tuple_substrtuple_substrTupleSubstrTupleSubstrTupleSubstrtuple_substr, which can be used in an expression in the following syntax:

Substring := String{Position1:Position2}

Execution Information

Parameters

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

Input tuple with string(s) to examine.

Position1Position1Position1Position1position1position_1 (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Input tuple with start position(s) “n1”.

Position2Position2Position2Position2position2position_2 (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Input tuple with end position(s) “n2”.

SubstringSubstringSubstringSubstringsubstringsubstring (output_control)  string(-array) HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Characters of the string(s) from position “n1” to “n2”.

Alternatives

tuple_str_first_ntuple_str_first_nTupleStrFirstNTupleStrFirstNTupleStrFirstNtuple_str_first_n, tuple_str_last_ntuple_str_last_nTupleStrLastNTupleStrLastNTupleStrLastNtuple_str_last_n, tuple_strstrtuple_strstrTupleStrstrTupleStrstrTupleStrstrtuple_strstr, tuple_strrstrtuple_strrstrTupleStrrstrTupleStrrstrTupleStrrstrtuple_strrstr, tuple_strlentuple_strlenTupleStrlenTupleStrlenTupleStrlentuple_strlen, tuple_strchrtuple_strchrTupleStrchrTupleStrchrTupleStrchrtuple_strchr, tuple_strrchrtuple_strrchrTupleStrrchrTupleStrrchrTupleStrrchrtuple_strrchr, tuple_splittuple_splitTupleSplitTupleSplitTupleSplittuple_split, tuple_environmenttuple_environmentTupleEnvironmentTupleEnvironmentTupleEnvironmenttuple_environment

Module

Foundation