测试空字符串和缺失值
字符串数组可以同时包含空字符串和缺失值。空字符串不包含字符,并且显示为其间不包含任何内容的双引号 ("")。您可以使用 == 运算符来确定某个字符串是否为空字符串。空字符串是其他所有字符串的子字符串。因此,contains 等函数始终会在其他字符串中查找空字符串。字符串数组还可以包含缺失值。字符串数组中的缺失值显示为 <missing>。要查找字符串数组中的缺失值,请使用 ismissing 函数而不是 == 运算符。
测试空字符串
您可以使用 == 运算符来检测字符串数组中的空字符串。
您可以使用其间不包含任何内容的双引号来创建空字符串 ("")。请注意,str 的大小是 1×1,而不是 0×0。但是,str 不包含字符。
str = ""str = ""
使用单引号创建一个空字符向量。请注意,chr 的大小是 0×0。字符数组 chr 实际上是一个空数组,而不只是一个不包含字符的数组。
chr = ''chr = 0×0 empty char array
使用 strings 函数创建一个空字符串数组。该数组的每个元素都是一个不包含任何字符的字符串。
str2 = strings(1,3)
str2 = 1×3 string
"" "" ""
将 str 与一个空字符串进行比较以测试其是否为空字符串。
if (str == "") disp 'str has zero characters' end
str has zero characters
请不要使用 isempty 函数来测试空字符串。不包含字符的字符串的大小仍然是 1×1。但是,您可以使用 isempty 函数来测试字符串数组是否至少具有一个大小为零的维度。
使用 strings 函数创建一个空字符串数组。要成为空数组,至少一个维度的大小必须为零。
str = strings(0,3)
str = 0×3 empty string array
使用 isempty 函数测试 str。
isempty(str)
ans = logical
1
测试字符串数组中的空字符串。== 运算符会返回一个大小与字符串数组相同的逻辑数组。
str = ["Mercury","","Apollo"]
str = 1×3 string
"Mercury" "" "Apollo"
str == ''ans = 1×3 logical array
0 1 0
在其他字符串中查找空字符串
字符串始终包含空字符串作为子字符串。实际上,空字符串总是位于每个字符串的开头和结尾。此外,在字符串中的任意两个连续字符之间也总能找到空字符串。
创建一个字符串。然后,测试其是否包含空字符串。
str = "Hello, world"; TF = contains(str,"")
TF = logical
1
测试 str 是否以空字符串开头。
TF = startsWith(str,"")TF = logical
1
计算 str 中的字符数量。然后,计算 str 中的空字符串数量。count 函数会计算位于 str 的开头和结尾以及每对字符之间的空字符串的数量。因此,如果 str 包含 N 个字符,则它同时包含 N+1 个空字符串。
str
str = "Hello, world"
strlength(str)
ans = 12
count(str,"")ans = 13
将一个子字符串替换为空字符串。当您使用空字符串调用 replace 时,它会删除该子字符串并将其替换为不包含字符的字符串。
replace(str,"world","")
ans = "Hello, "
使用 insertAfter 函数在空字符串后面插入一个子字符串。由于每对字符之间都存在空字符串,因此 insertAfter 会在每对字符之间插入子字符串。
insertAfter(str,"","-")
ans = "-H-e-l-l-o-,- -w-o-r-l-d-"
通常,用于替换、擦除、提取或插入子字符串的字符串函数允许您将空字符串指定为要修改的子字符串的开头和结尾。当您执行此操作时,这些函数将作用于字符串的开头和结尾以及每对字符之间。
测试缺失值
您可以使用 ismissing 函数来检测字符串数组中的缺失值。缺失字符串相当于数值数组的 NaN。它指示字符串数组包含缺失值的位置。缺失字符串显示为 <missing>。
要创建缺失字符串,请使用 string 函数转换缺失值。
str = string(missing)
str = <missing>
您可以创建同时包含空字符串和缺失字符串的字符串数组。使用 ismissing 函数确定哪些元素为包含缺失值的字符串。请注意,空字符串不是缺失字符串。
str(1) = ""; str(2) = "Gemini"; str(3) = string(missing)
str = 1×3 string
"" "Gemini" <missing>
ismissing(str)
ans = 1×3 logical array
0 0 1
将 str 与缺失字符串进行比较。比较结果始终为 0 (false),即使您将一个缺失字符串与另一个缺失字符串进行比较也是如此。
str == string(missing)
ans = 1×3 logical array
0 0 0
要查找缺失字符串,请使用 ismissing 函数。不要使用 == 运算符。
另请参阅
string | strings | strlength | ismissing | contains | startsWith | endsWith | erase | extractBetween | extractBefore | extractAfter | insertAfter | insertBefore | replace | replaceBetween | eraseBetween | eq | all | any