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对字符串矩阵也不起作用。

你可能感兴趣的:(String,函数,matlab)