MATLAB R2020a从入门到精通(升级版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

7.2 字符串的比较

可以通过多种方式对字符串与子字符串进行比较。例如,对两个字符串或两个字符串的部分进行比较,看两者是否相同;对两个独立的字符进行比较,看两者是否相同。

7.2.1 比较两个字符串

可以使用MATLAB中的函数比较两个字符串整体是否相同,方法如下。

· strcmp()函数用于判断两个字符串是否等价。

· 如果忽略大小写,那么strcmpi()函数用于判断两个字符串是否等价。

· strncmp()函数用于判断两个字符串的前n个字符是否等价。

· 如果忽略大小写,那么strncmpi()函数用于判断两个字符串的前n个字符是否等价。

使用strcmp()函数可以比较字符串,包括字符串前面或后面的空格。如果两个字符串完全相同,那么这个函数将返回1,否则返回0。strcmpi()函数与strcmp()函数类似,但strcmpi()函数忽略大小写(即将“a”与“A”视为相同)

strncmp()函数用来比较两个字符串的前n个字符,包含开头的空格,如果这n个字符是相同的,则返回1,否则返回0。strncmpi()函数与strncmp()函数相似,但strncmpi()函数忽略大小写。

为了更好地理解这些函数,输入如下所示的字符串:

img

字符串str1和字符串str2相同,但第1个字母的大小写不同。所以,strcmp()函数将返回0,strcmpi()函数将返回1。

img
img

字符串str1和字符串str3不相同,所以strcmp()函数与strcmpi()函数都返回0。但是字符串str1和字符串str3的前3个字符相同,所以如果按照如下所示的方式调用则返回1:

img

7.2.2 判断单个字符是否相等

可以利用MATLAB的关系运算符对字符数组中的每个元素进行检测,看是否相同,但要保证它们的维数是相同的,或者其中一个是标量。例如,可以用等于运算符(==)来检测两个字符串是否相匹配。

具体示例如下:

img

所有的关系运算符(、>=、、<=、==和~=)都是对字符所对应的ASCII值进行比较。与C语言不同,MATLAB中没有一个内建函数可以用于对两个字符串的整体进行“大于”或“小于”的关系运算。

7.2.3 在一个字符串内对字符进行判断

如下两个函数可以对一个字符串内的字符逐个进行分类。

· isletter()函数用于判断一个字符是否为字母。

· isspace()函数用于判断一个字符是否为空白字符(空格、制表符、换行符)。

如果要创建一个字符串mystring,可以输入如下所示的代码:

img

isletter()函数用于检测字符串中的每个字符,将产生一个与字符串isletter相同长度的输出向量,一个字符对应一个1。

img

在a中,前4个元素和最后一个元素是1,因为它们对应的mystring中的字符是字母。isspace()函数用于检测字符串中的每个字符,将产生一个和字符串长度相同的输出变量,对应于空字符的向量元素为0。

因为向量的第5个元素对应的是空格,所以向量的第5个元素的值为0。

MATLAB中提供的字符串比较函数如表7-1所示。

表7-1 MATLAB中提供的字符串比较函数

img