middle ... (string function)

Prev Next

Function Names

middle, middle include, middle until, middle until include

Description

This function extracts a middle part of the string either with two character position numbers or matching patterns or a combination of both.

Call as: function

Restrictions

Indirect parameter passing is disabled

Parameter count

3

Parameters

No.TypeDescription
1
input
valid types input string or value

Attention: If 1st parameter is a parameter set, please refer to middle [parameter set function] instead.
Values of types other than string will be converted to strings first.

2
input
numeral starting character position

Positive: String begins with specified character position (0 = 1st character, 1 = 2nd character, etc.)
Larger than character count: Blank string is returned.
Negative: Starting position counted from right to left, e.g. -1 = begin with last character
Smaller than minus number of characters in the string: Begins with 1st character
The function name ending '... include' will be ignored here.

Alt. 2
input
string starting matching pattern

Function middle ...: Middle part of the string begins after the starting matching pattern.
Function middle include ...: Middle part of the string includes the starting matching pattern.
Empty matching pattern: Middle part of the string begins with the 1st character of the input string.

Matching patterns are case-sensitive.
Attention: The matching pattern parameter distinguishes between strings and softquoted strings. In softquoted strings, following wildcard symbols act as placeholders: '?' for any character, '#' for any digit and '^' for any letter.

3
input
numeral character count or ending character position

For function names middle and middle include, this parameter specifies the number of characters to include.
Zero: No characters to include. Empty string is returned.
Negative numbers are treated as zero.
Large character counts going beyond the end of the input string will be reduced accordingly.

For function names middle until and middle until include, this parameter specifies the ending position in the input string.
Character positions before the starting position of found pattern will return empty strings or at least the string matched with the matching patter (applicable to middle until include).
Negative position numbers count from the last character position leftward.

Alt. 3
input
string ending matching pattern

Function middle ...: Middle part of the string ends before the ending matching pattern.
Function middle include ...: Middle part of the string includes the ending matching pattern.
Empty strings will be interpreted as no futher matches and returns empty strings.

Attention: The function names ending outside until combined with matching patterns provided will assert errors.
Attention: The matching pattern parameter distinguishes between strings and softquoted strings. In softquoted strings, following wildcard symbols act as placeholders: '?' for any character, '#' for any digit and '^' for any letter.

Return value

TypeDescription
string Extracted substring

Examples

      st[] = "The taste of the coffee!";

      echo( middle( st[], 4, 8 ), " / ",  middle until ( st[], 4, 8 ) );
      echo( middle( st[], -6, 3 ), " / ", middle until( st[], -7, -2 ) ); // "off", "coffee"
      echo;
      echo( middle( st[],  99, 8 ), " / ",  middle until ( st[],  99, 8 ) ); // empty strings
      echo( middle( st[], -99, 8 ), " / ",  middle until ( st[], -99, 8 ) );
      echo;
      echo( middle( st[], 'taste ', 13 ), " / ", middle include( st[], 'taste ', 13 ) ); // "of the coffee", "tast of the coffee"
      echo;
      echo( middle until( st[], 'taste ', -2 ), " / ", middle until include( st[], 'taste ', -2 ) ); // "of the coffee", "tast of the coffee"
      echo( middle until include( st[], 'taste ', 3 ), " / ", middle until include( st[], 'taste ', 6 ) ); // "", "tas"
      echo;
      echo( middle ( st[], 'taste ', ' coffee' ), " / ", middle include( st[], 'taste ', ' coffee' ) ); // "of the", "tast of the coffee"

Output

taste of / taste
off / coffee

/
The tast / The taste

of the coffee / taste of the coffee

of the coffee / taste of the coffee
/ tas

of the / taste of the coffee
Try it yourself: Open LIB_Function_middle.b4p in B4P_Examples.zip. Decompress before use.

See also

left [string function]
right [string function]
outside [string function]
middle [parameter set function]