Matlab字符串处理
Posted xingjiarong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab字符串处理相关的知识,希望对你有一定的参考价值。
Matlab提供了大量的字符串处理函数,如下表:
函数 | 功能 | 函数 | 功能 |
---|---|---|---|
eval(string) | 将括号内的字符串作为一个Matlab命令执行 | isspace | 空格字符存在时返回真值 |
blanks(n) | 返回一个n个零或空格的字符串 | isstr | 输入是一个字符串时返回真值 |
deblank | 去掉一个字符串后边的空格 | lasterr | 返回上个Matlab所产生错误的字符串 |
feval | 求由字符串给定的函数值 | strcmp | 字符串相同时返回真值 |
Findstr | 从一个字符串内找出字符串 | strrep | 用一个字符串替换另一个字符串 |
isletter | 字母存在时返回真值 | strtok | 在一个字符串里找出第一个标记 |
下面我们来讲解一下字符串的具体操作。
一、字符串构造
1、直接赋值的方式,将一个字符串写在单引号内,如果字符串本身就包括单引号的话,就再加一个单引号。
>> str=‘dd‘‘123‘
str =
dd‘123
2、多行字符串如果写在[]中,那么多行字符串的长度必须相同;如果写在{}内,那么长度可以不同。
>> str=[‘123‘;‘345‘]
str =
123
345
>> str={‘123‘;‘12345‘}
str =
‘123‘
‘12345‘
3、使用strcat函数,strvcat和char函数
strcat函数将两个字符串进行横向的连接。
>> a=‘123‘
a =
123
>> b=‘456‘
b =
456
>> c=strcat(a,b)
c =
123456
strvcat将字符串进行纵向连接,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使每行字符串的长度相同。
>> a=‘123‘
a =
123
>> b=‘1234‘
b =
1234
>> c=strvcat(a,b)
c =
123
1234
char函数与strvcat类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数就会把空字符串也用空格补偿后,再进行连接。
>> a=‘123‘;
>> b=‘123‘;
>> c=‘‘;
>> d=‘123‘;
>> e=strvcat(a,b,c,d)
e =
123
123
123
>> f=char(a,b,c,d)
f =
123
123
123
二、字符串比较
可以直接使用关系运算符也可以使用strcmp函数,但是两者的比较结果不同。如果使用关系运算符,要求参与比较的两个字符串的长度必须是一致的,并且返回的结果也是和两者一样大的数组,数组中的值是对应的位置上的两个字符比较的结果,但是strcmp就是比较两个字符串是否相等。
>> a=‘Hello‘;
>> b=‘World‘;
>> a==b
ans =
0 0 0 1 0
>> strcmp(a,b)
ans =
0
>> c=‘Hello‘;
>> strcmp(a,c)
ans =
1
三、查找与替换
使用findstr函数可以实现字符串的查找与搜索。
>> str=‘Xing JIarong is so strong‘;
>> findstr(str,‘ro‘)
ans =
9 22
使用strrep函数可以对字符串中的字符进行替换。
>> strrep(str,‘ro‘,‘12‘)
ans =
Xing JIa12ng is so st12ng
注意:
- findstr函数对字母大小写敏感
- findstr函数对字符串矩阵不起作用。因此字符串矩阵的搜索只能通过遍历矩阵的元素,然后在进行搜索
- 直接赋值方法不能使两个长度不同的字符串相互替换,而strrep函数可以替换两个任意长度的字符串,strrep对字符串矩阵也不起作用。
以上是关于Matlab字符串处理的主要内容,如果未能解决你的问题,请参考以下文章