CUT — Cuts a string based on a given delimiter
CUT()
works in a
similar manner to the cut(1)
Unix
command-line tool, and is, in fact, designed based upon that
tool.
In the dialplan, you may specify character offsets to select a
substring of a variable based purely on the uniform length of characters
(namely 1). CUT()
is designed to help
you work with data that may have multiple, variable-length sections,
divided by a common delimiter.
The most common case is the name of a channel, which is composed
of two parts, a base name and a unique identifier (e.g.,
SIP/tom-abcd1234 or
SIP/bert-1a2b3c4d). CUT()
may be used to trim the unique
identifier, no matter how long the base name may be:
; Trim the unique identifier from the current channel name
exten => 123,1,Set(chan=${CUT(CHANNEL,-,1)})
varname
is the name of the variable
that will be operated on. Note that CUT()
operates on the
name of a variable, rather than upon the
value of a variable. CUT()
is somewhat unique in this
regard.
char-delim
is the character that will
serve as the delimiter ('-' is the default)
range-spec
allows you to define which
fields are returned. The range-spec
can be
specified as a range with -
(e.g.,
1-3
) or a group of ranges and field
numbers by separating each with &
(e.g., 1&3-4
). Note that if
multiple field numbers are specified, the resulting value will have its
fields separated by the same delimiter.
range-spec
uses a 1-based offset.
That is, the first field is field 1 (as opposed to a 0-based offset,
where the first field would be 0).