strtok

Выбранные части строки

Синтаксис

token = strtok(str)
token = strtok(str,delimiters)
[token,remain] = strtok(___)

Описание

пример

token = strtok(str) анализирует str слева направо, с помощью пробельных символов в качестве разделителей, и возвращает часть или весь текст в token. Во-первых, strtok игнорирует любой ведущий пробел в str. Затем strtok запускается в первом символе, который не является пробелом и включает все символы до, но не включая, следующий пробельный символ. strtok возвращает ту часть текста в token. Если strtok не находит, что какой-либо пробел использует в качестве разделителя, то token включает все символы до, и включая, конец str.

пример

token = strtok(str,delimiters) анализирует str с помощью символов в delimiters. Если delimiters включает больше чем один символ, то strtok обрабатывает каждый символ в delimiters как отдельный разделитель. Поскольку разделители являются отдельными символами, delimiters может быть любым размером, и символы в delimiters могут быть в любом порядке.

В этом синтаксисе пробельные символы не являются разделителями, если вы не включаете их в delimiters.

пример

[token,remain] = strtok(___) возвращает оставшийся текст, если таковые имеются, в remain. Если strtok находит разделитель, то он включен в начале remain. Если strtok не находит разделителей в str, то это возвращает весь str, за исключением ведущих разделителей, в token, и remain не имеет никаких символов. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

Примеры

свернуть все

Создайте вектор символа. Возвратите весь текст до первого пробельного символа, который является разделителем. отбрасывания strtok, ведущие пробельные символы.

chr = '     Four score and seven years ago'
chr = 
'     Four score and seven years ago'
token = strtok(chr)
token = 
'Four'

Создайте строку. Начиная в R2017a, можно создать строки с помощью двойных кавычек.

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

Возвратите первую часть строки с помощью символа '!' в качестве разделителя.

token = strtok(str,'!')
token = 
"A horse"

Создайте массив строк. Начиная в R2017a, можно создать строки с помощью двойных кавычек.

str = ["all in good time";
       "my dog has fleas";
       "leave no stone unturned"]
str = 3x1 string array
    "all in good time"
    "my dog has fleas"
    "leave no stone unturned"

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

[token,remain] = strtok(str)
token = 3x1 string array
    "all"
    "my"
    "leave"

remain = 3x1 string array
    " in good time"
    " dog has fleas"
    " no stone unturned"

Создайте строку, которая содержит демонстрационный код HTML. Разломайте его на сегменты, разграниченные символами > и <. Сохраните сегменты в массиве строк.

Начиная в R2017a, можно создать строки с помощью двойных кавычек. Чтобы конкатенировать несколько строк в одну строку, используйте оператор plus, +.

str = "<ul class=continued><li class=continued>" + ...
      "<pre><a name=""13474""></a>token = strtok" + ...
      "(str,delimiter)<a name=""13475""></a>" + ...
      "token = strtok(str)"
str = 
"<ul class=continued><li class=continued><pre><a name="13474"></a>token = strtok(str,delimiter)<a name="13475"></a>token = strtok(str)"

Создайте массив пустой строки, чтобы содержать сегменты кода.

segments = strings(0)
segments = 

  0x0 empty string array

Повредите str в сегменты. Запишите цикл while, который неоднократно вызывает strtok на остающемся тексте HTML. Цикл while выходит, когда больше нет текста, чтобы проанализировать.

remain = str;
while (remain ~= "")
   [token,remain] = strtok(remain, '<>');
   segments = [segments ; token];
end

Отобразите сегменты кода.

segments
segments = 9x1 string array
    "ul class=continued"
    "li class=continued"
    "pre"
    "a name="13474""
    "/a"
    "token = strtok(str,delimiter)"
    "a name="13475""
    "/a"
    "token = strtok(str)"

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

свернуть все

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

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

Символы-разделители, заданные как массив строк, вектор символа или массив ячеек из символьных векторов. Поскольку strtok обрабатывает отдельные символы как разделители, delimiters может быть любым размером и может содержать символы в любом порядке.

Пример: strtok (str, {'YZ', 'X'}) обрабатывает 'X', 'Y' и 'Z' как отдельные разделители. Это не обрабатывает 'YZ' как разделитель.

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

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

свернуть все

Выбранная часть текста, возвращенного как массив строк, вектор символа или массив ячеек из символьных векторов. token включает весь текст, запускающийся в первый символ, который не является разделителем и заканчивающийся в, но не включая, следующим разделителем. str и token являются совпадающим типом данных.

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

Остаток от текста, возвращенного как массив строк, вектор символа или массив ячеек из символьных векторов. Если strtok находит разделитель в str, то remain включает весь текст, запускающийся в, и включая, тот разделитель и заканчивающийся в конце текста. str и remain являются совпадающим типом данных.

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

Советы

Не задавайте последовательность символа ESC как разделитель. strtok не переводит последовательности символа ESC. Вместо этого можно использовать функцию char, чтобы задать такие символы. Например, чтобы задать вкладку как использование разделителя char(9) вместо '\t'.

Расширенные возможности

Представлено до R2006a

Была ли эта тема полезной?