文档

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

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

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

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

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

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

cdC: \ Temp

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

cd“C: \程序文件”

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

cd“C: \程序文件”
输入参数太多。

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

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

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

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

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

cd (“C: \程序文件”

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

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

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

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

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

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

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

在R2016b之前,术语“字符串单元格数组”是指所有元素都包含字符向量的单元格数组。但是更准确的说法是将这种单元格数组称为“字符向量的单元格数组”,以区别于字符串数组。

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

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

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

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

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

使用双引号创建具有相同字符的字符串。虽然它能存储11个字符,str是1 × 1的字符串数组,还是字符串标量.如果在字符串上调用标量长度,则输出参数为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 =尺寸""
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 string数组"Hello" "World"

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

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

方法将文本追加到字符串(或字符串数组的元素)+操作符代替方括号。

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

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

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

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

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

另请参阅

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

相关的话题