5.2字符数组

Octave使用的字符串表示是一个字符数组,因此在内部是字符串dddddddddd实际上是长度为10的行向量,在所有位置都包含值100(100是的ASCII代码d). 这有助于特征矩阵的明显推广。使用字符矩阵,可以在一个变量中表示相同长度字符串的集合。Octave中使用的约定是,字符矩阵中的每一行都是一个单独的字符串,但让每一列表示一个字符串也是可能的。

创建字符矩阵的最简单方法是将多个字符串放在一个矩阵中。

collection=[“String#1”;“String#2”];

这将创建一个2乘9的字符矩阵。

函数ischar可用于测试对象是否为字符矩阵。

 
: tf = ischar (x)

如果返回truex是一个字符数组。

详见: isfloat, isiteger, 不合逻辑的, 非数字字符, isstring, iscellstr, isa.

 
: tf = isstring (s)

如果返回trues是一个字符串数组。

字符串数组是一种数据类型,它在数组中的每个元素处存储字符串(字符的行向量)。它不同于字符数组,字符数组是N维数组,其中每个元素是单个1x1字符。它也不同于字符串的元胞数组,后者在每个元素处存储字符串,但使用数组索引{}访问元素,而不是使用普通数组索引的字符串数组()’.

编程注意:Octave还没有实现字符串数组,所以这个函数总是返回false。

详见: ischar, iscellstr, isfloat, isiteger, 不合逻辑的, 非数字字符, isa.

要测试对象是否是字符串(即字符的1xN行向量,而不是字符矩阵),可以使用ischar与结合使用的函数isrow函数如下例所示:

ischar(集合)⇒ 1沙尔(收藏)&&isrow(收藏)⇒ 0ischar(“my string”)&&isrow(“my字符串”)⇒ 1.

一个相关的问题是,当从不同长度的字符串创建字符矩阵时会发生什么。答案是Octave将空白字符放在比最长字符串短的字符串的末尾。使用字符串_填充_查尔作用

 
: val = string_fill_char ()
: old_val = string_fill_char (new_val)
: old_val = string_fill_char (new_val, "local")

查询或设置用于将字符矩阵的所有行填充为相同长度的内部变量。

该值必须是单个字符,默认值为 (单个空间)。例如

string_fill_char(“X”);[“这些”;“是”;“字符串”]⇒  “这些XX”“是XXXX”“字符串

当从具有的函数内部调用时地方的参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。

在这种情况下,控制文本对齐的另一个有用函数是strjust作用

 
: str = strjust (s)
: str = strjust (s, pos)

返回文本,s,根据销售时点情报系统,这可能左边, 居中正确的.

如果销售时点情报系统被省略,默认为正确的.

空字符将替换为空格。所有其他字符数据都被创建为非空白。

用例

strjust([“a”;“ab”;“abc”;“abcd”])⇒        “a”“ab”“abc”“abcd

详见: deblank, 串替换, strtrim, 不可驯服的.

这显示了字符矩阵的一个问题。根本不可能呈现不同长度的字符串。解决方案是使用字符串的元胞数组,如中所述字符串的元胞数组.


版权所有 © 2024 Octave中文网

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