目录
strcmp函数的功能是比较两个字符串。
语法
tf = strcmp(s1,s2)
s1,s2 - 输入文本
输入文本,其中每个输入指定为字符向量、字符数组、字符向量元胞数组或字符串数组。输入的顺序不影响比较结果。
-
如果 s1 和 s2 都是字符串数组或字符向量元胞数组,则 s1 和 s2 的大小必须相同,除非其中一个是标量。
-
如果 s1 和 s2 都是具有多行的字符数组,则 s1 和 s2 可以具有不同的行数。
-
将字符向量非标量元胞数组或字符串数组与多行字符数组进行比较时,元胞数组或字符串数组必须是行数与字符数组相同的列向量。
tf - True 或 false 结果
True 或 false 结果,以数据类型 logical 为 1 或 0 形式返回。
-
如果每个输入都是字符串标量、标量元胞或字符向量,则 tf 是标量。
-
如果至少一个输入是字符串数组或字符向量元胞数组,则 tf 是大小与输入数组相同的数组。
-
如果一个输入是具有多行的字符数组,并且另一个输入是标量元胞或字符串标量,则 tf 是 n×1 数组,其中 n 是字符数组中的行数。
-
如果两个输入都是字符数组,则 tf 是标量。
说明
tf = strcmp(s1,s2) 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0 (false)。如果文本的大小和内容相同,则它们将视为相等。返回结果 tf 的数据类型为 logical。
输入参数可以是字符串数组、字符向量和字符向量元胞数组的任何组合。
提示
-
strcmp 函数用于比较文本。如果用于不受支持的数据类型,strcmp始终返回 0。
-
对于不区分大小写的文本比较,请使用 strcmpi 而不是 strcmp。
-
虽然 strcmp 与 C 函数共享名称,但它不遵循在文本输入匹配时返回 0 的 C 语言惯例。
-
对于字符串数组,可以使用关系运算符(==、~=、<、>、<=、>=)而不是 strcmp。可以对字符串数组进行比较和排序,就像对数值数组进行比较和排序一样。
示例
比较两个字符向量
比较两个不同的字符向量。
s1 = 'Yes';
s2 = 'No';
tf = strcmp(s1,s2)
tf = logical
0
strcmp 返回 0,因为 s1 和 s2 不相等。
比较两个相等的字符向量。
s1 = 'Yes';
s2 = 'Yes';
tf = strcmp(s1,s2)
tf = logical
1
strcmp 返回 1,因为 s1 和 s2 相等。
在元胞数组中查找文本
在字符向量元胞数组中查找单词 'upon'。
s1 = 'upon';
s2 = {'Once','upon';
'a','time'};
tf = strcmp(s1,s2)
tf = 2x2 logical array
0 1
0 0
数组 s2 中仅出现一处 s1,位于元素 s2(1,2) 位置。
比较两个字符向量元胞数组
比较两个字符向量元胞数组中的每个元素。
s1 = {'Time','flies','when';
'you''re','having','fun.'};
s2 = {'Time','drags','when';
'you''re','anxiously','waiting.'};
tf = strcmp(s1,s2)
tf = 2x3 logical array
1 0 1
1 0 0
s1 和 s2 之间有三处元素相等。这些是 'Time'(位于索引 (1,1) 处)、'when'(位于索引 (1,3) 处)和 'you''re'(位于索引 (2,1) 处)。
比较字符串数组
从 R2017a 开始,可以使用双引号创建字符串。使用 strcmp 比较字符串数组。
s1 = ["A","bc";
"def","G"];
s2 = ["B","c";
"def","G"];
tf = strcmp(s1,s2)
tf = 2x2 logical array
0 0
1 1
可以使用关系运算符对字符串数组进行比较和排序,就像可以对数值数组进行比较和排序一样。
使用 ==
可确定两个字符串数组的哪些元素是相等的。
s1 == s2
ans = 2x2 logical array
0 0
1 1
使用 < 可确定,按照 ASCII 字典顺序,s1 的哪些元素小于 s2 的相应元素。
s1 < s2
ans = 2x2 logical array
1 1
0 0