Spec-Zone.ru › Octave 9

Далее: Поиск в строках, Предыдущее: Конкатенация строк, Наверх: Операции со строками [Оглавление][Индекс]

5.3.3 Разделение и объединение строк ¶

: str = substr (s, offset) ¶
: substr (s, offset, len) ¶

Возвращает подстроку s, которая начинается с символа с номером offset и имеет длину len символов.

Нумерация позиций для смещений начинается с 1. Если offset отрицательное, извлечение начинается на этом расстоянии от конца строки.

Если len опущено, подстрока продолжается до конца s. Отрицательное значение len извлекает подстроку в пределах len символов от конца строки.

Примеры:

substr ("This is a test string", 6, 9)
     ⇒ "is a test"
substr ("This is a test string", -11)
     ⇒ "test string"
substr ("This is a test string", -11, -7)
     ⇒ "test"

Эта функция смоделирована по аналогии с эквивалентной функцией в Perl.

: [tok, rem] = strtok (str) ¶
: [tok, rem] = strtok (str, delim) ¶

Находит все символы в строке str до, но не включая, первого символа, который содержится в строке delim.

str также может быть массивом ячеек строк, в этом случае функция выполняется над каждой отдельной строкой и возвращает массив ячеек из токенов и остатков.

Ведущие разделители игнорируются. Если delim не указан, предполагаются пробелы.

Если запрошен rem, он содержит остаток строки, начиная с первого разделителя.

Примеры:

strtok ("this is the life")
     ⇒ "this"

[tok, rem] = strtok ("14*27+31", "+-*/")
     ⇒
        tok = 14
        rem = *27+31

См. также: index, strsplit, strchr, isspace.

: [cstr] = strsplit (str) ¶
: [cstr] = strsplit (str, del) ¶
: [cstr] = strsplit (…, name, value) ¶
: [cstr, matches] = strsplit (…) ¶

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

Если разделитель не указан, строка разбивается по пробелам {" ", "\f", "\n", "\r", "\t", "\v"}. В противном случае, разделитель del должен быть строкой или массивом ячеек строк. По умолчанию последовательные разделители в входной строке s сводятся к одному разделителю, что приводит к одному разделению.

Поддерживаемые аргументы в формате имя/значение:

  • collapsedelimiters, который может принимать значение true (по умолчанию) или false.
  • delimitertype, который может принимать значение "simple" (по умолчанию) или "regularexpression". Простой разделитель соответствует тексту точно, как он написан. В противном случае используется синтаксис для регулярных выражений, описанных в regexp.

Необязательный второй вывод matches возвращает разделители, которые были сопоставлены в исходной строке.

Примеры с простыми разделителями:

strsplit ("a b c")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a,b,c", ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a foo b,bar c", {" ", ",", "foo", "bar"})
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

strsplit ("a,,b, c", {",", " "}, "collapsedelimiters", false)
      ⇒
          {
            [1,1] = a
            [1,2] =
            [1,3] = b
            [1,4] =
            [1,5] = c
          }

Примеры с разделителями в виде регулярных выражений:

strsplit ("a foo b,bar c", ',|\s|foo|bar', ...
          "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] = b
            [1,3] = c
}

strsplit ("a,,b, c", '[, ]', "collapsedelimiters", false, ...
          "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] =
            [1,3] = b
            [1,4] =
            [1,5] = c
}

strsplit ("a,\t,b, c", {',', '\s'}, "delimitertype", "regularexpression")
⇒
{
            [1,1] = a
            [1,2] = b
            [1,3] = c
}

strsplit ("a,\t,b, c", {',', ' ', '\t'}, "collapsedelimiters", false)
⇒
{
            [1,1] = a
            [1,2] =
            [1,3] =
            [1,4] = b
            [1,5] =
            [1,6] = c
}

См. также: ostrsplit, strjoin, strtok, regexp.

: [cstr] = ostrsplit (s, sep) ¶
: [cstr] = ostrsplit (s, sep, strip_empty) ¶

Разбивает строку s с использованием одного или нескольких разделителей sep и возвращает массив ячеек строк.

Последовательные разделители и разделители на границах приводят к пустым строкам, если strip_empty не равно true. Значение по умолчанию strip_empty – false.

Двумерные массивы символов разбиваются на разделители и на исходные границы столбцов.

Пример:

ostrsplit ("a,b,c", ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = c
          }

ostrsplit (["a,b" ; "cde"], ",")
      ⇒
          {
            [1,1] = a
            [1,2] = b
            [1,3] = cde
          }

См. также: strsplit, strtok.

: str = strjoin (cstr) ¶
: str = strjoin (cstr, delimiter) ¶

Объединяет элементы массива ячеек строк cstr в одну строку.

Если delimiter не указан, элементы cstr разделяются пробелами.

Если delimiter задан как строка, элементы массива ячеек объединяются с использованием заданной строки. Поддерживаются управляющие последовательности.

Если delimiter – массив ячеек строк длиной на один меньше, чем cstr, то элементы cstr объединяются путем чередования элементов массива ячеек delimiter. Управляющие последовательности не поддерживаются.

strjoin ({'Octave','Scilab','Lush','Yorick'}, '*')
      ⇒ 'Octave*Scilab*Lush*Yorick'

См. также: strsplit.

Далее: Поиск в строках, Предыдущее: Конкатенация строк, Наверх: Операции со строками [Оглавление][Индекс]

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.2.0/Splitting-and-Joining-Strings.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API