5.3.2 Объединение строк
Строки можно объединять с помощью матричной записи (см. Строки, Символьные массивы), которая зачастую является наиболее естественным способом. Например:
fullname = [fname ".txt"]; email = ["<" user "@" domain ">"];
В каждом случае легко понять, как будет выглядеть итоговая строка. Этот способ также является наиболее эффективным. При объединении с помощью матричной записи парсер сразу начинает объединять строки, не обрабатывая накладные расходы на вызов функции и проверку входных данных, выполняемую соответствующей функцией.
Функцию newline можно использовать для объединения строк так, чтобы при отображении они выглядели как несколько строк текста.
-
:
c =newline -
Возвращает символ, соответствующий символу новой строки.
Это эквивалентно
"\n".Пример кода
joined_string = [newline "line1" newline "line2"] ⇒ line1 line2
Кроме того, есть несколько других функций для объединения строковых объектов, которые могут быть полезны в определённых ситуациях: char, strvcat, strcat и cstrcat. Наконец, можно использовать функции объединения общего назначения: см. cat, horzcat и vertcat.
- Все функции объединения строк, кроме
cstrcat, преобразуют числовые входные данные в символьные, подставляя соответствующий символ UTF-8 для каждого элемента (или многобайтовой последовательности), как показано в следующем примере:char ([98, 97, 110, 97, 110, 97]) ⇒ banana
Сведения о преобразовании между локальными кодировками и UTF-8 см. в разделах unicode2native и native2unicode.
-
charиstrvcatвыполняют вертикальное объединение, аstrcatиcstrcat— горизонтальное. Например:char ("an apple", "two pears") ⇒ an apple two pears strcat ("oc", "tave", " is", " good", " for you") ⇒ octave is good for you -
charсоздаёт в выходных данных пустую строку для каждой пустой строки во входных данных.strvcat, напротив, удаляет пустые строки.char ("orange", "green", "", "red") ⇒ orange green red strvcat ("orange", "green", "", "red") ⇒ orange green red - Все функции объединения строк, кроме
cstrcat, также принимают данные в виде массивов ячеек (см. Массивы ячеек).charиstrvcatпреобразуют массивы ячеек в символьные массивы, аstrcatвыполняет объединение внутри ячеек массивов ячеек:char ({"red", "green", "", "blue"}) ⇒ red green blue strcat ({"abc"; "ghi"}, {"def"; "jkl"}) ⇒ { [1,1] = abcdef [2,1] = ghijkl } -
strcatудаляет завершающие пробелы в аргументах (за исключением массивов ячеек), аcstrcatоставляет пробелы без изменений. Оба варианта поведения могут быть полезны, что видно из примеров:strcat (["dir1";"directory2"], ["/";"/"], ["file1";"file2"]) ⇒ dir1/file1 directory2/file2 cstrcat (["thirteen apples"; "a banana"], [" 5$";" 1$"]) ⇒ thirteen apples 5$ a banana 1$Обратите внимание, что в приведённом выше примере для
cstrcatпробелы возникают из-за внутреннего представления строк в массиве строк (см. Символьные массивы).
-
:
C =char(A) -
:
C =char(A, …) -
:
C =char(str1, str2, …) -
:
C =char(cell_array) -
Создаёт массив строк из одной или нескольких числовых матриц, символьных матриц или массивов ячеек.
Аргументы объединяются вертикально. Возвращаемые значения при необходимости дополняются пробелами, чтобы все строки массива строк имели одинаковую длину. Пустые входные строки учитываются и будут включены в выходные данные.
Для числовых входных данных каждый элемент преобразуется в соответствующий символ ASCII. Если входное значение находится вне диапазона ASCII (0–255), возникает ошибка диапазона.
Для массивов ячеек каждый элемент объединяется отдельно. Массивы ячеек, преобразованные с помощью
char, в большинстве случаев можно преобразовать обратно с помощьюcellstr. Например:char ([97, 98, 99], "", {"98", "99", 100}, "str1", ["ha", "lf"]) ⇒ ["abc " " " "98 " "99 " "d " "str1" "half"]
-
:
C =strvcat(A) -
:
C =strvcat(A, …) -
:
C =strvcat(str1, str2, …) -
:
C =strvcat(cell_array) -
Создаёт символьный массив из одной или нескольких числовых матриц, символьных матриц или массивов ячеек.
Аргументы объединяются вертикально. Возвращаемые значения при необходимости дополняются пробелами, чтобы все строки массива строк имели одинаковую длину. В отличие от
char, пустые строки удаляются и не включаются в выходные данные.Для числовых входных данных каждый элемент преобразуется в соответствующий символ ASCII. Если входное значение находится вне диапазона ASCII (0–255), возникает ошибка диапазона.
Для массивов ячеек каждый элемент объединяется отдельно. Массивы ячеек, преобразованные с помощью
strvcat, в большинстве случаев можно преобразовать обратно с помощьюcellstr. Например:strvcat ([97, 98, 99], "", {"98", "99", 100}, "str1", ["ha", "lf"]) ⇒ ["abc " "98 " "99 " "d " "str1" "half"]
-
:
str =strcat(s1, s2, …) -
Возвращает строку, содержащую все аргументы, объединённые по горизонтали.
Если аргументы являются строками ячеек,
strcatвозвращает строку ячеек, в которой отдельные ячейки объединены. Для числовых входных данных каждый элемент преобразуется в соответствующий символ ASCII. Завершающие пробелы в строковых символьных входных данных удаляются до объединения строк. Обратите внимание, что пробелы в значениях строк ячеек не удаляются.Например:
strcat ("|", " leading space is preserved", "|") ⇒ | leading space is preserved|strcat ("|", "trailing space is eliminated ", "|") ⇒ |trailing space is eliminated|strcat ("homogeneous space |", " ", "| is also eliminated") ⇒ homogeneous space || is also eliminateds = [ "ab"; "cde" ]; strcat (s, s, s) ⇒ "ababab " "cdecdecde"s = { "ab"; "cd " }; strcat (s, s, s) ⇒ { [1,1] = ababab [2,1] = cd cd cd }
-
:
str =cstrcat(s1, s2, …) -
Возвращает строку, содержащую все аргументы, объединённые по горизонтали, сохраняя завершающие пробелы.
Например:
cstrcat ("ab ", "cd") ⇒ "ab cd"s = [ "ab"; "cde" ]; cstrcat (s, s, s) ⇒ "ab ab ab " "cdecdecde"
© 1996–2026 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.4.0/Concatenating-Strings.html