2.5.2 对字符串的多项操作
对字符串的操作主要由一组函数实现,这些函数中有求字符串长度和矩阵阶数的length( )和size( ),有字符串和数值相互转换的double( )和char( )等。下面举例说明用法。
1.求字符串长度
length( )和size( )虽然都能测字符串、数组或矩阵的大小,但用法上有区别。length( )只从它们各维中挑出最大维的数值大小,而size( )则以一个向量的形式给出所有各维的数值大小。两者的关系是:length( )=max(size( ))。请仔细体会下面的举例。
【例2.51】 length( )和size( )函数的用法。
>> Sa=['I love my teacher, ' 'I' ' love truths ' 'more profoundly.']; >> length(Sa) ans = 49 >> size(Sa) ans = 1 49 >> A=[1 2 3;4 5 6]; >> length(A) ans = 3 >> A=[1 2 ;4 5; 6 7]; >> length(A) ans = 3 >> size(A) ans = 3 2
2.字符串与一维数值数组的相互转换
字符串是由若干字符组成的,在ASCII码中,每个字符又可对应一个数值编码,例如字符A对应65。如此一来,字符串又可在一个一维数值数组之间找到某种对应关系。这就构成了字符串与数值数组之间可以相互转换的基础。
【例2.52】 用abs( )、double( )和char( )、setstr( )实现字符串与数值数组的相互转换。
>> S1='I am nobody'; >> As1=abs(S1) As1 = 73 32 97 109 32 110 111 98 111 100 121 >> As2=double(S1) As2 = 73 32 97 109 32 110 111 98 111 100 121 >> char(As2) ans = I am nobody >> setstr(As2) ans = I am nobody
3.比较字符串
strcmp(S1, S2)是MATLAB的字符串比较函数,当S1与S2完全相同时,返回值为1;否则,返回值为0。
【例2.53】 strcmp( )的用法。
>> S1='I am nobody'; >> S2='I am nobody.'; >> strcmp(S1, S2) ans = 0 >> strcmp(S1, S1) ans = 1
4.查找字符串
findstr(S, s)是从某个长字符串S中查找子字符串s的函数。返回的结果值是子串在长串中的起始位置。
【例2.54】 findstr( )的用法。
>> S='I believe that love is the greatest thing in the world.'; >> findstr(S, 'love') ans = 16
5.显示字符串
disp( )是一个原样输出其中内容的函数,它经常在程序中做提示说明用。其用法见下例。
【例2.55】 disp( )的用法。
>> disp(’两串比较的结果是:'), Result=strcmp(S1, S1), disp(’若为1则说明两串完全 相同,为0则不同。')
两串比较的结果是:
Result = 1
若为1则说明两串完全相同,为0则不同。
除了上面介绍的这些字符串操作函数外,相关的函数还有很多,限于篇幅,不再一一介绍,有需要时可通过MATLAB帮助获得相关主题的信息。