关于字符串数组的常见问题
您可以在MathWorks中使用字符串数组处理文本®s manbetx 845产品。字符串数组存储文本片段,并提供一组将文本作为数据处理的函数。您可以索引、重塑和连接字符串数组,就像处理任何其他类型的数组一样。有关更多信息,请参见创建字符串数组.
在大多数方面,字符串数组的行为类似于字符向量和字符向量的单元格数组。但是,字符串数组和字符数组之间有一些关键的区别,可能会导致您意想不到的结果。对于这些差异中的每一个,都有一种推荐的使用字符串的方法来获得预期的结果。
为什么使用带有字符串的命令表单会返回错误?
的函数时cd
,dir
,拷贝文件
,或负载
命令形式的函数,避免使用双引号。在命令形式中,用双引号括起来的参数可能会导致错误。要将参数指定为字符串,请使用函数形式。
对于命令语法,您可以用空格而不是逗号分隔输入,并且不需要将输入参数括在圆括号中。例如,您可以使用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"
另请参阅
字符串
|strlength
|包含
|+
|strcat
|sprintf
|dir
|cd
|拷贝文件
|负载
|长度
|大小
|isempty