【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

例1.7.4

字符串的操作

字符串的执行

格式: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):用来比较字符串s1s2是否相等,如果相等,返回结果为1,否则返回0。

strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。

strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1s2是否相等,如果相等,返回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基础知识

posted @ 2023-01-29 18:23  SplendidCrepuscule  阅读(435)  评论(0编辑  收藏  举报