字符串的比较

在MATLAB和Python中,可以使用关系运算符比较字符串,也可以使用提供的各种函数比较字符串。[大谦MATLAB,dqmatlab点com]

使用关系运算符进行比较

【MATLAB】

MATLAB中,可以使用关系运算符直接对字符串进行比较。关系运算符包括<, <=, >, >=, =和~=等。使用关系运算符比较两个字符串时,从头开始逐个比较两个字符串的字符,根据第1个不同字符的比较结果得到两个字符串比较的结果。

下面给定两个字符串,比较第1个字符串是否小于第2个字符串。给定两个字符串。

code.matlab
>> a="abc";
>> b="abc123";

判断两个字符串是否相等。

code.matlab
>> a==b
ans =
  logical
   0

返回0,说明它们不相等。

判断两个字符串是否不相等。

code.matlab
>> a~=b
ans =
  logical
   1

返回1,说明它们不相等。

【Python】

Python中,使用关系运算符、成员运算符和字符串相关的函数和方法进行字符串比较。

下面用==或!=比较两个字符串对象的值相等或不相等。

code.python
>>> a='abc'
>>> b='abc123'
>>> a==b    #值相等时返回True
False
>>> a!=b   #值不相等时返回True
True

使用函数进行比较

【MATLAB】

MATLAB中可以使用strcmp, strcmpi, strncmp和strncmpi等函数比较字符串是否相同。

下面给定两个字符串a和b。

code.matlab
>> a="abcde";
>> b="abcDE123";

用strcmp函数判断a和b是否相同。

code.matlab
>> strcmp(a,b)
ans =
  logical
   0

返回0,说明a和b不相同。

用strncmp函数判断a和b的前5个字符是否相同。默认时有大小写区分。

code.matlab
>> strncmp(a,b,5)
ans =
  logical
   0

返回0,说明a和b的前5个字符不相同。

用strncmpi函数判断a和b的前5个字符是否相同。该函数不区分大小写。

code.matlab
>> strncmpi(a,b,5)
ans =
  logical
   1

返回1,说明不区分大小写时a和b的前5个字符相同。

【Python】

Python 3中没有功能类似MATLAB中strcomp函数的函数,实现类似的功能可以使用operator模块中的相关函数,如表5-7中所示。注意,这些函数比较字符串的大小时,是按字符串中的字母逐个比较的。比较时先获取字母对应的ASCII码,然后比较该数字的大小。

表5-7 用operator模块中的函数比较字符串

函 数 说 明
operator.lt(str1, str2) str1小于str2时返回True, 否则返回False
operator.le(str1, str2) str1小于或等于str2时返回True, 否则返回False
operator.eq(str1, str2) str1等于str2时返回True, 否则返回False
operator.ne(str1, str2) str1不等于str2时返回True, 否则返回False
operator.gt(str1, str2) str1大于str2时返回True, 否则返回False
operator.ge(str1, str2) str1大于或等于str2时返回True, 否则返回False

下面导入operator模块并使用模块中的函数比较给定字符串的大小。

code.python
>>> import operator as op
>>> op.lt('a';,'b')    #'a'是否比'b'小
True
>>> op.eq('a123',&#x27;a12b')    #'a123'与'a12b'是否相等
False
>>> op.ge('forpython',&#x27;forvba')    #'forpython'是否大于或等于'forvba'
False

Python提供的其他一些进行字符串比较的函数如表5-8所示。可以用它们判断字符串中元素的类型和大小写等情况。

表5-8 进行字符串比较的函数

函数 说 明
str.isalnum() 字符串中全是数字或字母
str.isalpha() 字符串中至少有一个字母并且全是字母
str.isdigit() 字符串中全是数字
str.isnumeric() 字符串中全是数字
str.islower() 字符串中全是否为小写字母
str.isupper() 字符串中全是否为大写字母
str.isspace() 字符串中只包含空格,返回True,否则返回False
max() 最大的字母
min() 最小的字母

下面举例说明:

code.python
>>> 'Abc123'.isalnum()    #字符串全是字母和数字
True
>>> 'Abc123'.isalpha()    #是否全是字母
False
>>> '123123'.isdigit()    #是否全是数字
True
>>> '123.123'.isnumeric()    #是否全是数字
False
>>> 'abc'.islower()    #字母是否全是小写
True
>>> max('Abc&#x27;)    #最大的字母
'c'