strsplit

Разделите строку или вектор символов в заданном разделителе

Синтаксис

C = strsplit(str)
C = strsplit(str,delimiter)
C = strsplit(str,delimiter,Name,Value)
[C,matches] = strsplit(___)

Описание

пример

C = strsplit(str) разделения str в пробеле в C. Пробельный символ эквивалентен любой последовательности в наборе {' ','\f','\n','\r','\t','\v'}.

Если str имеет последовательные пробельные символы, то strsplit обрабатывает их как один пробел.

пример

C = strsplit(str,delimiter) разделения str в разделителях заданы delimiter.

Если str имеет последовательные разделители без других символов между ними, то strsplit обрабатывает их как один разделитель. Например, и strsplit('Hello,world',',') и strsplit('Hello,,,world',',') возвращают тот же выходной параметр.

пример

C = strsplit(str,delimiter,Name,Value) задает дополнительные опции разделителя с помощью одного или нескольких аргументов пары "имя-значение". Например, чтобы обработать последовательные разделители как отдельные разделители, можно задать 'CollapseDelimiters',false.

пример

[C,matches] = strsplit(___) дополнительно возвращает массив, matches. Выходной аргумент matches содержит все случаи разделителей, на которые strsplit разделяет str. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

Примеры

свернуть все

str = 'The rain in Spain.';
C = strsplit(str)
C = 1x4 cell array
    {'The'}    {'rain'}    {'in'}    {'Spain.'}

C является массивом ячеек, содержащим четыре вектора символов.

Разделите вектор символов, который содержит разделенные от запятой значения.

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell array
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}

Разделите вектор символов, data, который содержит модули m/s с произвольным числом пробела по обе стороны от текста. Регулярное выражение, \s*, совпадает с любым пробельным символом, кажущимся нулем или больше раз.

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 = 1x6 cell array
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

matches = 1x5 cell array
    {'m/s'}    {'m/s '}    {' m/s'}    {' m/s '}    {'m/s'}

В этом случае вектор последнего знака в C пуст. Этот пустой символьный вектор следует за последним совпадающим разделителем.

myPath = 'C:\work\matlab';
C = strsplit(myPath,'\')
C = 1x3 cell array
    {'C:'}    {'work'}    {'matlab'}

Разделите вектор символов на ' ' и 'ain', обработав несколько разделителей как один. Задайте несколько разделителей в массиве ячеек из символьных векторов.

str = 'The rain in Spain stays mainly in the plain.';
[C,matches] = strsplit(str,{' ','ain'},'CollapseDelimiters',true)
C = 1x11 cell array
  Columns 1 through 7

    {'The'}    {'r'}    {'in'}    {'Sp'}    {'stays'}    {'m'}    {'ly'}

  Columns 8 through 11

    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x10 cell array
  Columns 1 through 7

    {' '}    {'ain '}    {' '}    {'ain '}    {' '}    {'ain'}    {' '}

  Columns 8 through 10

    {' '}    {' '}    {'ain'}

Разделите тот же вектор символов на пробеле и на 'ain', с помощью регулярных выражений и обработав несколько разделителей отдельно.

[C,matches] = strsplit(str,{'\s','ain'},'CollapseDelimiters',...
    false, 'DelimiterType','RegularExpression')
C = 1x13 cell array
  Columns 1 through 6

    {'The'}    {'r'}    {0x0 char}    {'in'}    {'Sp'}    {0x0 char}

  Columns 7 through 13

    {'stays'}    {'m'}    {'ly'}    {'in'}    {'the'}    {'pl'}    {'.'}

matches = 1x12 cell array
  Columns 1 through 8

    {' '}    {'ain'}    {' '}    {' '}    {'ain'}    {' '}    {' '}    {'ain'}

  Columns 9 through 12

    {' '}    {' '}    {' '}    {'ain'}

В этом случае strsplit обрабатывает эти два разделителя отдельно, таким образом, пустые символьные вектора появляются в выводе C между последовательно совпадающими разделителями.

Разделите текст на векторах символов ', ' и ', and '.

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', ',', and '})
C = 1x3 cell array
    {'bacon'}    {'lettuce'}    {'and tomato'}

matches = 1x2 cell array
    {', '}    {', '}

Поскольку списки команд, ', ' сначала и ', and ' содержат ', ', функцию strsplit, разделяют str на первом разделителе и никогда не переходят к второму разделителю.

Если вы инвертируете порядок разделителей, ', and ' берет приоритет.

str = 'bacon, lettuce, and tomato';
[C,matches] = strsplit(str,{', and ',', '})
C = 1x3 cell array
    {'bacon'}    {'lettuce'}    {'tomato'}

matches = 1x2 cell array
    {', '}    {', and '}

Входные параметры

свернуть все

Введите текст, заданный как вектор символов или скаляр строки.

Типы данных: char | string

Символы-разделители, заданные как вектор символов, 1-by-n массив ячеек из символьных векторов или 1-by-n массив строк. Текст, заданный в delimiter, не появляется в выводе C.

Задайте несколько разделителей в массиве ячеек или массиве строк. Функция strsplit разделяет str на элементах delimiter. Порядок, в котором разделители появляются в delimiter, не имеет значения, если несколько разделителей не начинают матч в том же символе в str. В этом случае strsplit разделяет на первом разделителе соответствия в delimiter.

delimiter может включать следующие escape-последовательности:

\\

Наклонная черта влево

\0

Пустой указатель

\a

Предупреждение

\b

Клавиша Backspace

\f

Перевод формата

\n

Новая строка

\r

Возврат каретки

\t

Горизонтальная вкладка

\v

Вертикальная вкладка

Пример: ','

Пример: {'-',','}

Типы данных: char | cell | string

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'DelimiterType','RegularExpression' дает команду strsplit обрабатывать delimiter как регулярное выражение.

Несколько обработка разделителя, заданная как пара, разделенная запятой, состоящая из 'CollapseDelimiters' и или true или false. Если true, то последовательные разделители в str обработаны как один. Если false, то последовательные разделители обработаны как отдельные разделители, приводящие к пустому символьному вектору элементы '' между совпадающими разделителями.

Пример: 'CollapseDelimiters',true

Тип разделителя, заданный как пара, разделенная запятой, состоящая из 'DelimiterType' и один из следующих векторов символов.

'Simple'За исключением escape-последовательностей, strsplit обрабатывает delimiter как текст.
'RegularExpression'strsplit обрабатывает delimiter как регулярное выражение.

В обоих случаях delimiter может включать escape-последовательности.

Выходные аргументы

свернуть все

Части вектора исходного символа, возвращенного как массив ячеек из символьных векторов или как массив строк. C всегда содержит еще один элемент, чем matches содержит. Поэтому, если str начинается с разделителя, то первый элемент C не содержит символов. Если концы str с разделителем, то последняя ячейка в C не содержит символов.

Идентифицированные разделители, возвращенные как массив ячеек из символьных векторов или как массив строк. matches всегда содержит тот меньше элемента, чем вывод C содержит. Если str является вектором символов или массивом ячеек из символьных векторов, то matches является массивом ячеек. Если str является массивом строк, то matches является массивом строк.

Советы

  • Начиная в R2016b, функции split рекомендуют разделить элементы массива строк.

Смотрите также

| | |

Введенный в R2013a