6.3.4单元字符串数组

元胞数组的一个常见用途是将多个字符串存储在同一个变量中。通过让每一行都是一个字符串,也可以将多个字符串存储在一个racter矩阵中。然而,这引入了所有字符串必须具有相等长度的问题。因此,建议使用元胞数组来存储多个字符串。对于操作需要字符矩阵表示的情况,有几个函数可以将字符串的元胞数组转换为字符数组并返回。charstrvcat将元胞数组转换为字符数组(详见连接字符串),而函数cellstr将字符数组转换为字符串的元胞数组:

a = ["hello"; "world"];
c = cellstr (a)
     ⇒ c =
         {
           [1,1] = hello
           [2,1] = world
         }
 
: cstr = cellstr (strmat)

从字符串数组的元素创建新的元胞数组对象strmat.

每行strmat成为的元素cstr。在转换之前,将删除一行中的任何尾部空格。

要从cellstr转换回字符数组,请使用char.

详见: cell, char.

广告

使用元胞数组存储多个字符串的另一个优点是Octaves中包含的大多数字符串操作函数都支持这种表示。例如,可以使用strcmp作用如果此函数的一个参数是字符串,而另一个是字符串的元胞数组,则会将元胞数组的每个元素与字符串参数进行比较:

c = {"hello", "world"};
strcmp ("hello", c)
     ⇒ ans =
        1   0

以下字符串函数支持字符串的元胞数组:char, strvcat, strcat详见连接字符串), strcmp, strncmp, strcmpi,strncmpi详见在字符串中搜索), str2double,deblank, strtrim, strtrunc, strfind,strmatch, regexp, regexpi详见字符串操作str2double详见转换字符串).

函数iscellstr可用于测试对象是否为字符串数组。

 
: tf = iscellstr (cell)

如果元胞数组的每个元素都返回truecell是一个字符串。

详见: ischar, isstring.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2