strsplit
Split string or character vector at specified delimiter
Syntax
Description
Note
split is recommended
over strsplit because it provides greater flexibility
and allows vectorization. For additional information, see Alternative Functionality.
splits C = strsplit(str)str at whitespace into C. A
whitespace character is equivalent to any sequence in the set {'
','\f','\n','\r','\t','\v'}.
If str has consecutive whitespace characters, then
strsplit treats them as one whitespace.
splits C = strsplit(str,delimiter)str at
the delimiters specified by delimiter.
If str has consecutive delimiters, with no other characters
between them, then strsplit treats them as one delimiter.
For example, both strsplit('Hello,world',',') and
strsplit('Hello,,,world',',') return the same
output.
specifies additional delimiter options using one or more name-value pair
arguments. For example, to treat consecutive delimiters as separate delimiters,
you can specify C = strsplit(str,delimiter,Name,Value)'CollapseDelimiters',false.
Examples
str = 'The rain in Spain.';
C = strsplit(str)C = 1×4 cell
{'The'} {'rain'} {'in'} {'Spain.'}
C is a cell array containing four character vectors.
Split a character vector that contains comma-separated values.
data = '1.21, 1.985, 1.955, 2.015, 1.885'; C = strsplit(data,', ')
C = 1×5 cell
{'1.21'} {'1.985'} {'1.955'} {'2.015'} {'1.885'}
Split a character vector, data, which contains the units m/s with an arbitrary number of whitespace on either side of the text. The regular expression, \s*, matches any whitespace character appearing zero or more times.
data = '1.21m/s1.985m/s 1.955 m/s2.015 m/s 1.885m/s'; [C,matches] = strsplit(data,'\s*m/s\s*',... 'DelimiterType','RegularExpression')
C = 1×6 cell
{'1.21'} {'1.985'} {'1.955'} {'2.015'} {'1.885'} {0×0 char}
matches = 1×5 cell
{'m/s'} {'m/s '} {' m/s'} {' m/s '} {'m/s'}
In this case, the last character vector in C is empty. This empty character vector follows the last matched delimiter.
myPath = 'C:\work\matlab'; C = strsplit(myPath,'\')
C = 1×3 cell
{'C:'} {'work'} {'matlab'}
Split a character vector on ' ' and 'ain', treating multiple delimiters as one. Specify multiple delimiters in a cell array of character vectors.
str = 'The rain in Spain stays mainly in the plain.'; [C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1×11 cell
{'The'} {'r'} {'in'} {'Sp'} {'stays'} {'m'} {'ly'} {'in'} {'the'} {'pl'} {'.'}
matches = 1×10 cell
{' '} {'ain '} {' '} {'ain '} {' '} {'ain'} {' '} {' '} {' '} {'ain'}
Split the same character vector on whitespace and on 'ain', using regular expressions and treating multiple delimiters separately.
[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
false, 'DelimiterType','RegularExpression')C = 1×13 cell
{'The'} {'r'} {0×0 char} {'in'} {'Sp'} {0×0 char} {'stays'} {'m'} {'ly'} {'in'} {'the'} {'pl'} {'.'}
matches = 1×12 cell
{' '} {'ain'} {' '} {' '} {'ain'} {' '} {' '} {'ain'} {' '} {' '} {' '} {'ain'}
In this case, strsplit treats the two delimiters separately, so empty character vectors appear in output C between the consecutively matched delimiters.
Split text on the character vectors ', ' and ', and '.
str = 'bacon, lettuce, and tomato'; [C,matches] = strsplit(str,{', ',', and '})
C = 1×3 cell
{'bacon'} {'lettuce'} {'and tomato'}
matches = 1×2 cell
{', '} {', '}
Because the command lists ', ' first and ', and ' contains ', ', the strsplit function splits str on the first delimiter and never proceeds to the second delimiter.
If you reverse the order of delimiters, ', and ' takes priority.
str = 'bacon, lettuce, and tomato'; [C,matches] = strsplit(str,{', and ',', '})
C = 1×3 cell
{'bacon'} {'lettuce'} {'tomato'}
matches = 1×2 cell
{', '} {', and '}
Input Arguments
Input text, specified as a character vector or a string scalar.
Data Types: char | string
Delimiting characters, specified as a character vector, a
1-by-n cell array of character
vectors, or a 1-by-n string array.
Text specified in delimiter does not appear in the
output C.
Specify multiple delimiters in a cell array or a string array.
The strsplit function splits str on
the elements of delimiter. The order in which
delimiters appear in delimiter does not matter
unless multiple delimiters begin a match at the same character in str.
In that case strsplit splits on the first matching
delimiter in delimiter.
delimiter can include the following escape
sequences:
| Backslash |
| Null |
| Alarm |
| Backspace |
| Form feed |
| New line |
| Carriage return |
| Horizontal tab |
| Vertical tab |
Example: ','
Example: {'-',','}
Data Types: char | cell | string
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
Example: 'DelimiterType','RegularExpression' instructs strsplit to
treat delimiter as a regular expression.
Multiple delimiter handling, specified as the comma-separated
pair consisting of 'CollapseDelimiters' and either true or false.
If true, then consecutive delimiters in str are
treated as one. If false, then consecutive delimiters
are treated as separate delimiters, resulting in empty character vector '' elements
between matched delimiters.
Example: 'CollapseDelimiters',true
Delimiter type, specified as the comma-separated pair consisting
of 'DelimiterType' and one of the following character
vectors.
'Simple' | Except for escape sequences, strsplit treats
delimiter as literal
text. |
'RegularExpression' | strsplit treats delimiter as
a regular expression. |
In both cases, delimiter can include escape
sequences.
Output Arguments
Parts of the original character vector, returned as a cell array
of character vectors or as a string array. C always
contains one more element than matches contains.
Therefore, if str begins with a delimiter, then
the first element of C contains no characters.
If str ends with a delimiter, then the last cell
in C contains no characters.
Identified delimiters, returned as a cell array of character vectors or as a string array.
matches always contains one less element than
output C contains. If str is a
character vector or a cell array of character vectors, then
matches is a cell array. If str is
a string array, then matches is a string array.
Alternative Functionality
Update code that makes use of strsplit to use split instead. The default orientation for split is
by column. For example:
| Not Recommended | Recommended |
|---|---|
str = strsplit("1 2 3")str =
1×3 string array
"1" "2" "3" |
str = split("1 2 3")str =
3×1 string array
"1"
"2"
"3" |
Extended Capabilities
Usage notes and limitations:
The first input argument to
strsplitmust be a character vector.
This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.
Version History
Introduced in R2013aGenerate C/C++ code for the strsplit function.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)