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 isempty. Этот пустой символьный вектор следует за последним совпадающим разделителем.

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

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

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

свернуть все

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

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

Советы

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

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

| | |

Введенный в R2013a