天天看点

matlab字符串处理

一、字符串的构造

字符串构造:写在单引号之内的内容,如果内容包括单引号,则用重复的单引号来表示

>> str='i''m good'

str =

i'm good           

构造多行字符串:['……';'……']或者{‘……’;‘……’}

前者要求字符串内容长度相同,后者则没有限制

>> strcat(str,str2)%字符串拼接

ans =

i'm goodright           
>> strvcat(str,str2)

ans =

i'm good
right              

strcat是单行字符串连接;strvcat函数和char函数用于纵向连接多个字符串。strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右端会补空格,使得每行字符串长度相等。

char函数与strvcat函数类似(?)

二、字符串的比较

两个字符串之间的比较可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同返回0或1;

而关系运算符,会对字符串的每个元素进行比较,会返回一个01数组,且两字符串长度必须相同

>> sabc=strvcat(a,b,c)

sabc =

top   
      
123456

>> cabc=char(a,b,c)

cabc =

top   
      
123456

>> whos
  Name      Size            Bytes  Class    Attributes

  a         1x3                 6  char               
  ans       3x6                36  char               
  b         1x1                 2  char               
  c         1x6                12  char               
  cabc      3x6                36  char               
  sabc      3x6                36  char               
  str       1x8                16  char               
  str2      1x5                10  char               

>> strcmp(a,b)

ans =

     0

>> sabc==cabc

ans =

     1     1     1     1     1     1
     1     1     1     1     1     1
     1     1     1     1     1     1           

字符串函数:

eval(string):求字符串的值

>> a

a =

top

>> s='a.*2'

s =

a.*2

>> eval(s)

ans =

   232   222   224           

blanks(n):返回一个n个零或者空格的字符串

deblank:去掉字符串后拖的空格

feval:求字符串给定的函数值

>> f=@(x)x.^2

f = 

    @(x)x.^2

>> x=1:5

x =

     1     2     3     4     5

>> feval(f,x)

ans =

     1     4     9    16    25           

findstr:从一个字符串内部找字符串

isletter:字符存在时返回真值

isspace:空格字符串存在时返回真值

isstr:输入一个字符串返回真值

lasterr:返回一个产生matlab'错误的字符串

strrep:用一个字符串替换另一个字符串

strtok:在一个字符串里找出第一个标记

>> strtok(a,';')

ans =

ergfoqejglkfkg           

三、字符串的查找和替换

findstr区分大小写,对字符串矩阵不起作用

>> str1='hello matlab'

str1 =

hello matlab

>> findstr(str1;'o')
 findstr(str1;'o')
            |
Error: Unbalanced or unexpected parenthesis or bracket.
 
>> findstr(str1,'o')

ans =

     5
           

strrep函数:

直接赋值法:替换字符和被替换字符的长度必须一致

>> str1(1:5)='good'
In an assignment  A(:) = B, the number of elements in A and B
must be the same.
 
>> str1(1:5)='goodd'

str1 =

goodd matlab           

函数法:可以是长度不同的字符串

str1 =

goodd matlab

>> strrep(str1,'goodd','mamai')

ans =

mamai matlab           

三、字符串-数值型转换

abs:将字符串转化为asc码

setstr:asc码转换成字符串

>> str='hello matlab'

str =

hello matlab

>> num=abs(str1)

num =

   103   111   111   100   100    32   109    97   116   108    97    98           

fprintf:把格式化的文本写到文件中或者显示屏上 

sprintf:用格式控制数字转换成字符串

sscanf:按照指定格式读入

hex2num:十六进制字符串转换为IEEE浮点数

dec2hex:十进制数转化为十六进制字符串

int2str:整数转换成字符串

lower:字符串转换成小写     upper字符串转化为大写

num2str:数字转换成字符串

str2mat:字符串转换成一个文本矩阵

str2num:字符串转成数字

继续阅读