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'

猜你喜欢

转载自blog.csdn.net/HangHug_L/article/details/107738354