在MATLAB R2016b®引入字符串数组作为文本的数据类型。R2018b,所有MathWorks®s manbetx 845产品兼容字符串数组。兼容意味着如果可以将文本指定为字符向量或字符向量的单元数组,那么也可以将其指定为字符串数组。现在您可以在自己的代码中采用字符串数组作为文本数据类型。
如果你写了其他MATLAB用户代码,那么它是你的优势,更新您的API接受字符串数组,同时保持与其他文本数据类型的向后兼容性。字符串采用使你的代码与MathWorks产品保持一致。s manbetx 845
如果你的代码有一些依赖,或者如果您正在开发新的代码,那么可以考虑使用字符串数组为更好的表现您的主文本数据类型。在这种情况下,最好的做法是写或更新您的API接受输入参数是特征向量,特征向量单元阵列,或字符串数组。
有关字符串数组和其他术语的定义,请参见字符和字符串数组的术语。
在MATLAB中,可以存储两种方式的文本数据。一种方法是使用一个字符数组,这是字符序列,正如数字数组是数字的序列。或者,起于R2016b,另一种是存储在一个字符序列串。你可以存储在多个字符串字符串数组。有关更多信息,请参见字符和字符串。
当你的代码有很多依赖,你必须保持向后兼容,请按照下列方法来更新函数和类呈现兼容的API。
接受字符串数组作为输入参数。
如果输入参数可以是字符向量或字符向量的单元数组,则更新代码使参数也可以是字符串数组。例如,考虑一个具有输入参数的函数,您可以将其指定为字符向量(使用单引号)。最佳实践是更新函数,以便将参数指定为字符向量或字符串标量(使用双引号)。
接受字符串作为名称 - 值对的参数名称及值。
在名称-值对参数中,允许将名称指定为字符向量或字符串—即名称周围使用单引号或双引号。如果一个值可以是字符向量或特征向量的单元阵列,然后更新代码,以便它也可以是一个字符串数组。
不接受文本输入参数字符串数组单元阵列。
字符串数组的单元格数组在每个单元格中都有一个字符串数组。例如,{“你好”、“世界”}
是字符串数组的单元阵列。虽然可以创建这样的单元格数组,但不建议将其用于存储文本。串数组的元素具有相同的数据类型,并有效地存储。如果您存储字符串单元阵列,那么你就失去了使用的字符串数组的优势。
但是,如果您的代码接受不同类型的单元格数组作为输入,那么可以考虑接受包含字符串的单元格数组。你可以这样的电池阵列中的任意字符串转换为特征向量。
在一般情况下,不改变输出类型。
如果函数返回一个字符向量或特征向量的单元阵列,然后不改变输出类型,即使该函数接受字符串数组作为输入。例如,FILEREAD
函数接受指定为字符向量或字符串的输入文件名,但函数以字符向量的形式返回文件内容。通过保持输出类型相同,可以保持向后兼容性。
返回相同的数据类型时,函数修改输入文本。
如果你的函数修改输入的文本,并返回修改后的文本作为输出参数,则输入和输出参数应具有相同的数据类型。例如,降低
函数接受文本作为输入参数,将其转换为小写字母,并将其返回。如果输入参数是一个字符向量,则降低
返回一个字符向量。如果输入是一个字符串数组,然后降低
返回一个字符串数组。
考虑添加'TextType'
参数导入功能。
如果你的函数进口文件中的数据,至少有一些数据可以是文本,然后再考虑增加一个输入参数,指定是否返回文本字符数组或一个字符串数组。例如,readtable
功能提供'TextType'
名称 - 值对的参数。此参数指定是否readtable
返回与字符向量或串阵列的单元阵列文本的表格。
方法作为功能。
对于字符串收养,治疗方法,尽管它们是功能。接受字符串数组作为输入参数,并且在一般情况下,不改变的输出参数的数据类型,如前一节中所描述。
不要更改属性的数据类型。
如果属性是字符向量或字符向量的单元格数组,则不要更改其类型。当访问这样的属性时,返回的值仍然是字符向量或字符向量的单元格数组。
作为替代方案,你可以添加一个新的属性,它是一个字符串,并使其依赖于旧物业,以保持兼容性。
设置属性使用字符串数组。
如果你可以使用一个特征向量或特征向量的单元阵列设置属性,然后更新您的类来设置使用字符串数组也该属性。然而,不改变属性的数据类型。取而代之的是,输入字符串数组转换成属性的数据类型,然后设置属性。
添加串
方法。
如果你的类已经有一个烧焦
和/或cellstr
方法,再加入串
方法。如果你能代表你的类作为一个特征向量或特征向量的单元阵列的对象,那么其表示为一个字符串数组了。
您可以通过接受字符串数组作为输入参数,然后将它们转换成特征向量或特征向量单元阵列采用旧的API字符串。如果你在一个函数的开始执行这样的转换,那么你就需要更新它的其余部分。
的convertStringsToChars
函数提供了一种处理所有输入参数的方法,仅转换为字符串数组的参数。要使现有代码能够接受字符串数组作为输入,请添加一个调用convertStringsToChars
在你的函数和方法的开端。
例如,如果你定义一个函数myFunc
它接受三个输入参数,使用处理所有三个输入convertStringsToChars
。保持代码的其余部分不变。
功能[a,b,c] = convertStringsToChars(a,b,c);< 1号线的原版的代码>的<第2行原版的代码>...
在这个例子中,参数[A,B,C]
覆盖输入参数到位。如果任何输入参数不是一个字符串数组,那么它是未改变的。
如果myFunc
接受的输入参数的可变数量,然后处理所有由指定的参数变长度输入宗量
。
功能Y = myFunc的(varargin)[varargin {:}] = convertStringsToChars(varargin {:});...
性能注意事项
的convertStringsToChars
转换一个输入参数时,函数是更有效的。如果你的函数是性能敏感的,那么你就可以将输入参数之一的时间,同时还留下你的代码的其余部分不变。
功能Y = myFunc的(A,B,c)一种= convertStringsToChars(a)的B = convertStringsToChars(B);C = convertStringsToChars(C);...
当代码的依赖关系很少,或者正在开发全新的代码时,可以考虑使用字符串数组作为主要文本数据类型。在处理大量文本时,字符串数组提供了良好的性能和高效的内存使用。与字符向量的单元格数组不同,字符串数组具有同构数据类型。字符串数组使编写可维护代码变得更容易。要在使用字符串数组的同时保持对其他文本数据类型的向后兼容性,请遵循以下方法。
接受任何文本数据类型作为输入参数。
如果输入参数可以是一个字符串数组,这时也允许它是一个字符向量或特征向量的单元阵列。
接受字符数组作为名称 - 值对的参数名称及值。
在名称-值对参数中,允许将名称指定为字符向量或字符串—即名称周围使用单引号或双引号。如果值可以是字符串数组,那么也允许它是字符向量或字符向量的单元数组。
不接受文本输入参数字符串数组单元阵列。
字符串数组的单元格数组在每个单元格中都有一个字符串数组。虽然可以创建这样的单元格数组,但不建议将其用于存储文本。如果代码使用字符串作为主要文本数据类型,则在字符串数组中存储多段文本,而不是字符串数组的单元格数组。
但是,如果您的代码接受不同类型的单元格数组作为输入,那么可以考虑接受包含字符串的单元格数组。
在一般情况下,返回字符串。
如果函数返回的输出参数是文本,那么将它们作为字符串数组返回。
返回相同的数据类型时,函数修改输入文本。
如果你的函数修改输入的文本,并返回修改后的文本作为输出参数,则输入和输出参数应具有相同的数据类型。
方法作为功能。
接受字符向量和特征向量作为输入自变量的单元阵列,如前一节中所描述。在一般情况下,返回字符串作为输出。
指定属性字符串数组。
如果一个属性包含文本,然后设置使用的字符串数组的属性。当您访问的属性,则返回值的字符串数组。
当编写新代码,或修改代码来使用字符串数组作为主文本数据类型,保持与其他的文本数据类型的向后兼容性。您可以接受特征向量或特征向量作为输入参数的单元阵列,然后立即将它们转换为字符串数组。如果你在一个函数的开始执行这样的转换,那么你的代码的其余部分只能使用字符串数组。
的convertCharsToStrings
功能提供了一种方法来处理所有的输入参数,转换只有那些字符向量或特征向量的单元阵列参数。要启用新的代码,以接受这些文本数据类型作为输入,添加调用convertCharsToStrings
在你的函数和方法的开端。
例如,如果你定义一个函数myFunc
它接受三个输入参数,使用处理所有三个输入convertCharsToStrings
。
功能Y = myFunc的(A,B,C)[A,B,C] = convertCharsToStrings(A,B,C);< 1号线的原版的代码>的<第2行原版的代码>...
在这个例子中,参数[A,B,C]
覆盖输入参数到位。如果任何输入参数不是一个字符向量或特征向量的单元阵列中,那么它是未改变的。
如果myFunc
接受的输入参数的可变数量,然后处理所有由指定的参数变长度输入宗量
。
功能Y = myFunc的(varargin)[varargin {:}] = convertCharsToStrings(varargin {:});...
性能注意事项
的convertCharsToStrings
转换一个输入参数时,函数是更有效的。如果你的函数是性能敏感的,那么你就可以将输入参数之一的时间,同时还留下你的代码的其余部分不变。
功能Y = myFunc的(A,B,c)一种= convertCharsToStrings(a)的B = convertCharsToStrings(B);C = convertCharsToStrings(C);...
如果可能的话,避免手动转换包含文本的输入参数,而不是使用convertStringsToChars
要么convertCharsToStrings
功能。检查的输入参数的数据类型和自己将它们转换为一个乏味的做法,容易出错。
如果必须将输入参数,然后使用功能,在此表中。
要检查是否可以包含文本的输入参数的数据类型,可以考虑使用此表中所示的图案。
所需的输入参数类型 |
旧检查 |
新检查 |
---|---|---|
字符向量或标量串 |
|
|
|
||
字符向量或标量串 |
|
|
非空字符向量或字符串标量 |
|
|
|
||
字符向量或串阵列的单元阵列 |
|
|
任何文本数据类型 |
|
|
一个空字符串是没有字符的字符串。MATLAB显示一个空字符串作为对它们之间没有双引号(”“
)。然而,一个空字符串仍然是一个1×1的字符串数组。它是不空数组。
检查字符串是否为空的推荐方法是使用strlength
功能。
海峡=”“;tf = (str) ~= 0)
做不使用isempty
函数检查空字符串。空字符串没有字符,但仍然是一个1乘1的字符串数组。
的strlength
函数返回字符串中的阵列中的每个串的长度。如果字符串必须是串标,也是不为空,然后检查这两个条件。
tf = (isStringScalar(str) && strlength(str) ~= 0)
如果str
可以是字符向量或字符串标量,那么您还可以使用strlength
以确定其长度。strlength
返回0
如果输入参数是空字符向量(“”
)。
TF =((ischar(STR)|| isStringScalar(STR))&& strlength(STR)〜= 0)
一个空字符串数组是,实际上,空数组的,也就是说,其具有至少一维的阵列,其长度为0
。
创建空字符串数组的推荐方法是使用字符串
功能,指定0
作为输入参数的至少一个。的isempty
函数返回1
当输入是空字符串数组。
str =字符串(0);TF =的isEmpty(STR)
的strlength
函数返回一个数值数组,其大小与输入字符串数组相同。如果输入是一个空字符串数组,然后strlength
返回一个空数组。
str =字符串(0);L = strlength (str)
字符串数组也可以包含缺少字符串。缺少的字符串是等价的字符串为NaN
对于数字阵列。它表示在该字符串数组有缺失值。缺少的字符串显示为<缺失>
,不带引号。
属性可以创建缺少的字符串失踪
功能。检查缺少的字符串推荐的方法是使用不见了
功能。
STR =串(缺失);TF = ISMISSING(STR)
做不检查通过比较一个字符串缺少字符串中缺少字符串。
缺少的字符串不等于本身,就像为NaN
不等于本身。
STR =串(缺失);F =(STR ==丢失)
MathWorks的文档使用这些术语来描述字符和字符串数组。为了保持一致性,自己的文档,错误信息和警告在使用这些术语。
特征向量 -1
-通过-ñ
字符数组数据类型的,烧焦
。
字符数组 -米
-通过-ñ
字符数组数据类型的,烧焦
。
字符向量的单元数组-每个单元包含一个字符向量的单元数组。
字符串要么串标 -1
-通过-1
字符串数组。字符串标量可以包含1
-通过-ñ
序列字符,但本身就是一个对象。在精确地描述大小和数据类型时,应同时使用术语“字符串标量”和“字符向量”。否则,您可以在描述中使用术语“字符串”。
串矢量 -1
-通过-ñ
要么ñ
-通过-1
字符串数组。如果只有一个尺寸是可能的,那么在你的描述中使用它。例如,使用“1
-通过-ñ
字符串数组”来描述该尺寸的阵列。
String数组 -米
-通过-ñ
字符串数组。
空字符串 - 一个没有字符的字符串标量。
空字符串数组 - 字符串数组具有至少一个维度,其大小是0
。
缺少字符串 - 字符串标量是缺失值(显示为<缺失>
)。
cellstr
|烧焦
|convertCharsToStrings
|convertContainedStringsToChars
|convertStringsToChars
|isStringScalar
|iscellstr
|ischar
|isstring
|串
|字符串
|strlength
|validateattributes