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 }
© 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/Concatenating-Strings.html