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. The matches выходной аргумент содержит все вхождения разделителей, на которых strsplit разделяет str. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

Примеры

свернуть все

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

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

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

data = '1.21, 1.985, 1.955, 2.015, 1.885';
C = strsplit(data,', ')
C = 1x5 cell
    {'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
    {'1.21'}    {'1.985'}    {'1.955'}    {'2.015'}    {'1.885'}    {0x0 char}

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

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

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

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

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

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

  Columns 8 through 11

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

matches = 1x10 cell
  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
  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
  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
    {'bacon'}    {'lettuce'}    {'and tomato'}

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

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

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

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

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

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

свернуть все

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

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

Разделение символов, заданное как вектор символов, a 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 - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

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

свернуть все

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

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

Совет

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

Введенный в R2013a