文档

关于字符串数组的常见问题

MATLAB®介绍了字符串R2016b中的数据类型。从R2018b开始,您可以在MathWorks中使用字符串数组来处理文本®下载188bet金宝搏产品。字符串数组存储文本片段,并提供一组将文本作为数据处理的函数。可以像处理任何其他类型的数组一样,对字符串数组进行索引、重塑和连接。有关更多信息,请参见创建字符串数组

在大多数方面,字符串数组的行为类似于字符向量和字符向量的单元格数组。然而,字符串数组和字符数组之间有一些关键的区别,这可能会导致您意想不到的结果。对于每一种差异,都有一种推荐的使用字符串的方法来获得预期的结果。

为什么使用带字符串的命令表单会返回错误?

当您使用函数时,例如cddir拷贝文件,或负载命令形式的函数,避免使用双引号。在命令形式中,用双引号括起来的参数可能导致错误。要将参数指定为字符串,请使用函数形式。

在命令语法中,您使用空格而不是逗号分隔输入,并且不使用括号括住输入参数。例如,你可以使用cd函数与命令语法更改文件夹。

cdC: \ Temp

文本C: \ Temp是字符向量。在命令形式中,所有参数都是字符向量。如果有包含空格的参数(如文件夹名),则通过将其括在单引号中将其指定为一个输入参数。

cd“C: \程序文件”

但如果你用双引号指定参数,那么cd抛出一个错误。

cd“C: \程序文件”
使用cd时出错输入参数太多。

根据所使用的函数和所指定的参数,错误消息可能有所不同。例如,如果你使用负载函数使用命令语法并使用双引号指定参数,然后负载抛出一个不同的错误。

负载“myVariables.mat”
错误使用加载无法读取文件'"myVariables。垫”:无效的论点。

在命令形式中,双引号被视为文字文本的一部分,而不是字符串构造操作符。如果你写的是cd C: \“程序文件”在函数形式中,它看起来像调用cd有两个参数。

cd (““C: \计划”“文件””

当将参数指定为字符串时,使用函数语法。所有支持命令语法的函数也支持函数语法。金宝app例如,你可以用cd函数语法和双引号字符串输入参数。

cd (“C: \程序文件”

为什么单元格数组中的字符串返回错误?

当你有多个字符串时,将它们存储在字符串数组中,一个细胞数组。使用方括号而不是花括号创建字符串数组。在存储和操作文本方面,字符串数组比单元格数组更有效。

str = [“金星”“地球”“火星”
str = 1×3 string array "金星" "地球" "火星"

避免使用字符串的单元格数组。当您使用单元格数组时,您将放弃使用字符串数组所带来的性能优势。事实上,大多数函数不接受字符串单元格数组作为输入参数、选项或名称-值对的值。例如,如果指定字符串单元格数组作为输入参数,则包含函数抛出错误。

C = {“金星”“地球”“火星”
C = 1×3单元阵列{[“金星”]}{【“地球”】}{("火星")}
TF =包含(C,“地球”
使用contains First参数时出错,该参数必须是字符串数组、字符向量或字符向量的单元格数组。

相反,将参数指定为字符串数组。

str = [“金星”“地球”“火星”];TF =包含(str,“地球”);

在R2016b之前,术语“字符串单元数组”指的是其元素全部包含字符向量的单元数组。但是将这种单元格数组称为“字符向量的单元格数组”更为精确,以将它们与字符串数组区分开来。

单元格数组可以包含任何数据类型的变量,包括字符串。仍然可以创建元素全部包含字符串的单元格数组。如果您已经在代码中指定了字符向量的单元格数组,那么用双引号替换单引号似乎是一个简单的更新。但是,不建议您创建或使用字符串单元格数组。

为什么长度()字符串返回1?

使用the是很常见的长度函数确定字符向量中的字符数。但是要确定字符串中的字符数,请使用strlength功能,不长度

使用单引号创建字符向量。要确定它的长度,请使用长度函数。因为C是一个向量,其长度等于字符数。C是一个1 × 11的向量。

C =“Hello world”;L =长度(C)
L = 11

使用双引号创建一个相同字符的字符串。虽然它存储了11个字符,str是一个1乘1的字符串数组,还是字符串标量.如果对字符串标量调用length,则输出参数为1,不管它存储了多少字符。

str =“Hello World”;L =长度(str)
L = 1

要确定字符串中的字符数,请使用strlength函数,在R2016b中引入。的兼容性,strlength也作用于字符向量。在这两种情况下strlength返回字符数。

L = strlength (C)
L = 11
L = strlength (str)
L = 11

你也可以用strlength包含多个字符串的字符串数组和字符向量的单元格数组。

长度函数返回数组的最长维度的大小。对于字符串数组,长度返回字符串沿着数组的最长维度。它不返回字符数字符串。

为什么isempty (" ")返回0 ?

一个字符串可以没有任何字符。这样的字符串是空字符串.可以使用空双引号对指定空字符串。

L = strlength (""
L = 0

然而,空字符串是一个空数组。空字符串是一个碰巧没有字符的字符串标量。

深圳=大小(""
Sz = 1×2 11

如果你叫isempty在空字符串上,然后返回0),因为字符串不是空数组。

tf = isempty (""
逻辑0

然而,如果你打电话isempty在空字符数组上,然后返回1真正的).指定为空单引号对的字符数组,'',是一个0 × 0字符数组。

tf = isempty (''
逻辑1

要测试一段文本是否没有字符,最佳实践是使用strlength函数。无论输入是字符串标量还是字符向量,都可以使用相同的调用。

str =""如果Strlength (str) == 0'字符串没有文本'结束
字符串没有文本
空空的=''如果Strlength (chr) == 0'字符向量没有文本'结束
字符向量没有文本

为什么使用方括号追加字符串会返回多个字符串?

可以使用方括号将文本追加到字符向量。但是如果您使用方括号将文本添加到字符串数组中,那么新文本将作为字符串数组的新元素连接起来。要将文本追加到字符串,请使用+运营商或strcat函数。

例如,如果您连接两个字符串,那么结果将是一个1乘2的字符串数组。

str = [“你好”“世界”
str = 1×2 string array "Hello" "World"

但是,如果您连接两个字符向量,那么结果将是一个更长的字符向量。

str = [“你好”“世界”
装备=“HelloWorld”

要将文本追加到字符串(或字符串数组的元素),请使用+运算符而不是方括号。

str =“你好”+“世界”
str =“HelloWorld”

作为替代,您可以使用strcat函数。strcat附加文本,无论输入参数是字符串还是字符向量。

str = strcat (“你好”“世界”
str =“HelloWorld”

不管你用方括号,+,或strcat,您可以指定任意数量的参数。在中间追加一个空格字符你好世界

str =“你好”+”“+“世界”
str = "Hello World"

另请参阅

||||||||||||

相关的话题