5.3.1 Конкатенация строк
Строки можно конкатенировать с помощью матричной нотации (см. Строки, Массивы символов), что часто является наиболее естественным методом. Например:
fullname = [fname ".txt"]; email = ["<" user "@" domain ">"];
В каждом случае легко понять, какой будет итоговая строка. Этот метод также является наиболее эффективным. При использовании матричной конкатенации анализатор сразу начинает объединять строки, не тратя время на обработку накладных расходов вызова функции и проверки ввода соответствующей функции.
Тем не менее, существуют и другие функции для конкатенации объектов строк, которые могут быть полезны в определенных ситуациях: 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, пробелы происходят из внутреннего представления строк в массиве строк (см. Массивы символов).
- char (x)
- char (x, …)
- char (s1, s2, …)
- 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"]
- strvcat (x)
- strvcat (x, …)
- strvcat (s1, s2, …)
- 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"]
- 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 }
- cstrcat (s1, s2, …)
-
Возвращает строку, содержащую все аргументы, конкатенированные горизонтально с сохранением хвостовых пробелов.
Например:
cstrcat ("ab ", "cd") ⇒ "ab cd"s = [ "ab"; "cde" ]; cstrcat (s, s, s) ⇒ "ab ab ab " "cdecdecde"
© 1996–2022 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/v5.2.0/Concatenating-Strings.html