Matlab中字符串表⽰、字符串矩阵、字符串中的常⽤函数
字符串表⽰
类似于字符数组,不过Matlab中字符串是⽤单引号括起来的字符序列。也是以ASCII码形式存储。
>> str='LuYihang';
>> str(3:6)
ans =
'Yiha'
注意:若字符串中的字符含有单引号,则该单引号字符要⽤两个单引号来表⽰。
>> str2='LuYi''hang'
str2 =
'LuYi'hang'
字符串矩阵
也可以建⽴多⾏字符串,形成字符串矩阵。
>> ch=['a:f';'1:6']
ch =    //可以看到字符串中相⽤a:f代替abcdef是不⾏的,a:f就是⼀个字符串
2×3 char 数组
'a:f'
'1:6'
>> ch(2,2)
ans =
':'
例题:建⽴⼀个字符串向量,然后对该向量做如下处理:
字符串比较函数实现
1 取第1~5个字符组成的⼦字符串。
2 将字符串倒过来重新排列。
3 将字符串中的⼩写字母变成相应的⼤写字母,其余字符不变。
4 统计字符串中⼩写字母的个数。
>> ch='ABc123d4e56FG90';
>> subch=ch(1:5)
subch =
'ABc12'
//题⽬1
>> revch=ch(end:-1:1)
revch =
'09GF65e4d321cBA'
//题⽬2
>> k=find(ch>='a'&ch<='z')
k =
3    7    9
>> ch(k)=ch(k)-32
ch =
'ABC123D4E56FG90'
//题⽬3  ⽀持ASCII码
>> length(k)
ans =
3
//题⽬4
字符串操作
1. 字符串的执⾏
格式: eval(s) s是字符串,作⽤是将字符串中的内容作为Matlab命令来执⾏,实现由键盘输⼊命令,⽽不是预先设置好命令,相⽐更灵活。
>> t=pi;
>> m='[t,sin(t),cos(t)]';
>> m
m =
'[t,sin(t),cos(t)]'
>> eval(m)
ans =
3.1416    0.0000  -1.0000
2. 字符串与数值之间的转换
abs和 double函数都可以⽤来获取字符串矩阵所对应的ASCII码数值矩阵。
char函数可以把ASCII码矩阵转换为字符串矩阵。
>> s1='MATLAB';
>> a=abs(s1)
a =
77    65    84    76    65    66
>> b=char(a)
b =
'MATLAB'
3. 字符串的⽐较
字符串的⽐较有两种⽅法:利⽤关系运算符或字符串⽐较函数。
关系运算符⽐较:两个字符串⾥的每个字符依次按ASCII值⼤⼩逐个进⾏⽐较,⽐较的结果是⼀个数值向量,向量中的元素要么是1,要么是0。
>>'www 0'>='W1234'
ans =
1×5 logical 数组
1  1  1  0  0
使⽤关系运算符⽐较的前提:两个字符串的长度必须相等。
字符串⽐较函数⽤于判断字符串是否相等,有4种⽐较⽅式,函数如下:
1 strcmp(s1,s2):⽤来⽐较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
2 strncmp(s1,s2,,n):⽤来⽐较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。
3 strcmpi(s1,s2):在忽略字母⼤⼩写前提下,⽐较字符串s1和s2是否相等,如果相等返回1,否则返回0。
4 strncmpi(s1,s2,n):在忽略字符串⼤⼩写前提下,⽐较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。
>> strncmpi('www0','W123',1)
ans =
logical
1
4. 字符串的查与替换
strfind(s1,s2):返回字符串s2在字符串s1中的开始位置。
strrep(s1,s2,s3):将字符串s1中的所有⼦字符串s2替换为字符串s3。
注意还有个findstr(s1,s2)函数,区别在于findstr函数中s1 s2⽆先后顺序区别,返回短字符串在长字符串中的开始位置。
>> strfind('ababedabababedfg','bed') ans =
4    12
>> strfind('bed','ababedabababedfg') ans =
[]
>> findstr('bed','ababedabababedfg') ans =
4    12
>> strrep('ababedabababedfg','bed','toy') ans =
'abatoyababatoyfg'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。