Octave使用的字符串表示是一个字符数组,因此在内部是字符串"dddddddddd"
实际上是长度为10的行向量,在所有位置都包含值100(100是的ASCII代码"d"
). 这有助于特征矩阵的明显推广。使用字符矩阵,可以在一个变量中表示相同长度字符串的集合。Octave中使用的约定是,字符矩阵中的每一行都是一个单独的字符串,但让每一列表示一个字符串也是可能的。
创建字符矩阵的最简单方法是将多个字符串放在一个矩阵中。
collection = [ "String #1"; "String #2" ];
这将创建一个2乘9的字符矩阵。
函数ischar
可用于测试对象是否为字符矩阵。
tf =
isstring (s)
¶如果返回trues是一个字符串数组。
字符串数组是一种数据类型,它在数组中的每个元素处存储字符串(字符的行向量)。它不同于字符数组,字符数组是N维数组,其中每个元素是单个1x1字符。它也不同于字符串的元胞数组,后者在每个元素处存储字符串,但使用数组索引{}访问元素,而不是使用普通数组索引的字符串数组()’.
编程注意:Octave还没有实现字符串数组,所以这个函数总是返回false。
详见: ischar, iscellstr, isfloat, isinteger, islogical, isnumeric, isa.
要测试对象是否是字符串(即字符的1xN行向量,而不是字符矩阵),可以使用ischar
与结合使用的函数isrow
函数如下例所示:
ischar (collection) ⇒ 1 ischar (collection) && isrow (collection) ⇒ 0 ischar ("my string") && isrow ("my string") ⇒ 1
一个相关的问题是,当从不同长度的字符串创建字符矩阵时会发生什么。答案是Octave将空白字符放在比最长字符串短的字符串的末尾。使用string_fill_char
作用
val =
string_fill_char ()
¶old_val =
string_fill_char (new_val)
¶old_val =
string_fill_char (new_val, "local")
¶查询或设置用于将字符矩阵的所有行填充为相同长度的内部变量。
该值必须是单个字符,默认值为" "
(单个空间)。例如
string_fill_char ("X"); [ "these"; "are"; "strings" ] ⇒ "theseXX" "areXXXX" "strings"
当从具有的函数内部调用时"local"
参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。
在这种情况下,控制文本对齐的另一个有用函数是strjust
作用
str =
strjust (s)
¶str =
strjust (s, pos)
¶返回文本,s,根据pos,这可能"left"
, "center"
或"right"
.
如果pos被省略,默认为"right"
.
空字符将替换为空格。所有其他字符数据都被创建为非空白。
用例
strjust (["a"; "ab"; "abc"; "abcd"]) ⇒ " a" " ab" " abc" "abcd"
这显示了字符矩阵的一个问题。根本不可能呈现不同长度的字符串。解决方案是使用字符串的元胞数组,如中所述Cell Arrays of Strings.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2