MATLAB基础及其应用教程
上QQ阅读APP看书,第一时间看更新

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帮助获得相关主题的信息。