【Matlab学习1.7】字符串处理
字符串的表示
在 Matlab 中,字符串是用单引号括起来的字符序列。
例1.7.1:
>> xm = 'Matlab University'
xm =
'Matlab University'
>> xm(1:3)
ans =
'Mat'
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
例1.7.2:
>> 'I''m a teacher.'
ans =
'I'm a teacher.'
建立多行字符串,形成字符串矩阵。
例1.7.3:
>> ch = ['abcdef'; '123456'];
>> ch(2,3)
ans =
'3'
例1.7.4:
建立一个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的子字符串;
② 将字符串倒过来重新排列;
③ 将字符串中的小写字母变成相应的大写字母,其余字符不变;
④ 统计字符串中小写字母的个数。
>> ch = 'Matlab R2021a'
ch =
'Matlab R2021a'
>> subch = ch(1:5)
subch =
'Matla'
>> revch = ch(end:-1:1)
revch =
'a1202R baltaM'
>> k = find(ch>='a'&ch<='z')
k =
2 3 4 5 6 13
>> ch(k) = ch(k) - ('a'-'A')
ch =
'MATLAB R2021A'
>> length(k)
ans =
6
字符串的操作
字符串的执行
格式:eval(s)
,其中 s 为字符串。
例1.7.5:
>> t = pi;
>> m = '[t,sin(t),cos(t)]';
>> y = eval(m)
y =
3.1416 0.0000 -1.0000
字符串与数值之间的转换
abs 和 double 函数都可以用来获取字符串矩阵所对应的 ASCII 码数值矩阵。
char 函数可以把 ASCII 码矩阵转换为字符串矩阵。
例1.7.6:
>> s1 = 'MATLAB';
>> a = abs(s1)
a =
77 65 84 76 65 66
>> char(a+32)
ans =
'matlab'
字符串的比较
字符串的比较有两种方法:利用关系运算符或字符串比较函数。
关系运算符比较:
两个字符串里的每个字符依次按 ASCII 值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。
例1.7.7:
>> 'www0'>='W123'
ans =
1×4 logical 数组
1 1 1 0
字符串比较函数:
字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:
strcmp(s1,s2)
:用来比较字符串s1
和s2
是否相等,如果相等,返回结果为1,否则返回0。
strncmp(s1,s2,n)
:用来比较两个字符串前n
个字符是否相等,如果相等,返回1,否则返回0。
strcmpi(s1,s2)
:在忽略字母大小写前提下,比较字符串s1
和s2
是否相等,如果相等,返回1,否则返回0。
strncmpi(s1,s2,n)
:在忽略字母大小写前提下,比较两个字符串前n
个字符是否相等,如果相等,返回1,否则返回0。
记忆方法:str—string—字符串,n—前n个字符,cmp—compare—比较(compare 取前三个辅音字母即为 cmp),i—ignore—忽略字母大小写。
例1.7.8:
>> strcmp('www0','w123')
ans =
logical
0
>> strncmpi('Www0','w123',1)
ans =
logical
1
字符串的查找与替换
findstr(s1,s2)
:返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3)
:将字符串s1
中的所有子字符串s2
替换为字符串s3
。
记忆方法:str—string—字符串,rep—replace—替换。
例1.7.9:
>> p = findstr('This is a test!','is')
p =
3 6
>> p = findstr('is','This is a test!')
p =
3 6
>> result = strrep('This is a test!','test','class')
result =
'This is a class!'
友链:朋友的博客,第一章总结「matlab学习笔记」MATLAB基础知识