上QQ阅读APP看书,第一时间看更新
2.5.3 二维字符数组
二维字符数组其实就是由字符串纵向排列构成的数组。借用构造数值数组的方法,可以用直接输入法生成或连接函数法获得。下面用两个实例加以说明。
【例2.56】 将S1、S2、S3、S4分别视为数组的4行,用直接输入法沿纵向构造二维字符数组。
>> S1=’路修远以多艰兮,'; >> S2=’腾众车使径侍。'; >> S3=’路不周以左转兮,'; >> S4=’指西海以为期 ! '; >> S=[S1; S2, ' '; S3; S4, ' '] %此法要求每行字符数相同,不够时要补齐空格 S = 路修远以多艰兮, 腾众车使径侍。 路不周以左转兮, 指西海以为期! >> S=[S1; S2, ' '; S3; S4] %每行字符数不同时,系统提示出错 ?? ? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
可以将字符串连接生成二维数组的函数有多个,在下例2.54中将主要介绍char( )、strvcat( )和str2mat( )这3个函数。
【例2.57】 用char( )、strvcat( )和str2mat( )函数生成二维字符数组的示例。
>> S1a='I''m nobody, '; S1b=' who are you? '; %注意串中有单引号时的处理方法 >> S2='Are you nobody too? '; >> S3='Then there''s a pair of us.'; %注意串中有单引号时的处理方法 >> SS1=char([S1a, S1b], S2, S3) SS1 = I'm nobody, who are you? Are you nobody too? Then there's a pair of us. >> SS2=strvcat(strcat(S1a, S1b), S2, S3) SS2 = I'm nobody, who are you? Are you nobody too? Then there's a pair of us. >> SS3=str2mat(strcat(S1a, S1b), S2, S3) SS3 = I'm nobody, who are you? Are you nobody too? Then there's a pair of us.
例2.57中,strcat( )和strvcat( )两函数的区别在于,前者是将字符串沿横向连接成更长的字符串,而后者是将字符串沿纵向连接成二维字符数组。