主要内容

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

您可以在MathWorks中使用字符串数组处理文本®s manbetx 845产品。字符串数组存储文本片段,并提供一组将文本作为数据处理的函数。您可以索引、重塑和连接字符串数组,就像处理任何其他类型的数组一样。有关更多信息,请参见创建字符串数组

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

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

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

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

cdC: \ Temp

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

cd“C: \程序文件”

但如果使用双引号指定参数,则cd抛出错误。

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

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

负载“myVariables.mat”
错误使用加载无法读取文件'"myVariables。mat"':无效参数。

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

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

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

cd (“C: \程序文件”

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

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

STR = [“金星”“地球”“火星”
str = 1×3字符串数组"金星" "地球" "火星"

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

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

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

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

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

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

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

使用单引号创建字符向量。要确定它的长度,使用length函数。因为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函数。的兼容性,strlength同样作用于字符向量。在两种情况下strlength返回字符数。

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

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

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

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

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

L = strlength(""
L = 0

但是,空字符串是一个空数组。空字符串是恰好没有字符的字符串标量。

Sz =大小(""
Sz = 1×2 1

如果你打电话isempty如果是空字符串,则返回0),因为字符串不是空数组。

Tf = isempty(""
Tf =逻辑0

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

Tf = isempty(
Tf =逻辑1

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

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

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

可以使用方括号将文本附加到字符向量。但是,如果使用方括号将文本添加到字符串数组,则新文本将作为字符串数组的新元素连接起来。要将文本附加到字符串,请使用+操作员或strcat函数。

例如,如果连接两个字符串,则结果是1 × 2字符串数组。

STR = [“你好”“世界”
str = 1×2字符串数组"Hello" "World"

但是,如果连接两个字符向量,则结果是一个更长的字符向量。

STR = [“你好”“世界”
chr = 'HelloWorld'

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

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

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

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

无论你使用方括号,+,或strcat,可以指定任意数量的参数。在两者之间附加一个空格字符你好而且世界

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

另请参阅

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

相关的话题