exponenta event banner

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
    {'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около-n клеточный массив символьных векторов или 1около-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