matlab字符串处理

字符串

       字符串又称为字符数组,由多个字符连接而成。字符串一般用 “ 括起来。

1、创建字符串

例如:>> country='China';

     >> whos

 Name          Size                Bytes  Class

country      1x5                   10  char array

从中可以看出,在内存中,每个字符占两个字节,下面来测试变量country的数据类型,

>> country='china';

>> whos

  Name          Size                    Bytes  Class

 country       1x5                        10  char array

Grand total is 5 elements using 10 bytes

>> class(country)

ans =

char

>> ischar(country)

ans =

     1

 

2、    创建二维字符串

创建二维字符串时候,确定每行具有相同的长度,例如:

>> name=['Li Yi';'Xu Hu']

name =

Li Yi

Xu Hu

 

】如果根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。

>>name=['Liu Ming';'Hu  Yu  ']

name =

Liu Ming

Hu  Yu 

 

注:不建议用上述方法。

用char函数创建字符串数组才更为简单,因为char函数自动以最长的输入字符串的长度为标准经行空格补全工作。如:

>> name1=char('Liu Ming','Xu Hu')

name1 =

Liu Ming

Xu Hu  

注意:参数和参数之间是逗号连接的。

>> size(name1)

ans =

    2     8

name1是一个两行八列的数组

去除空格

>> trimname=deblank(name(2,:))

trimname =

grace

 

>> trimname=deblank(name(1,:))

trimname =

Liu Ming

 

>> trimname=deblank(name())

trimname =

Liu Ming

grace

 

3、    字符串类型转换

 

str2double函数把一个字符串单元数组转换为字符串表示的双精度值。

 

int2str函数将整形数据转换为字符串型数据

 

num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,他控制字符串的位数,或指定一个实际格式。

 

>> p=num2str(pi,9)

p =

3.14159265

 

mat2str函数将数组转换为字符串,mat2str函数将返回一个包含文本的字符串。可用ischar( )检验。

 

4、    比较字符串

用strcmp( )函数比较字符串,实用strncmp可比较字符串的前n+1个字符。

 

>> str1='hello';

>> str2='help';

>> strcmp(str1,str2)

ans =

    0

>> C=strncmp(str1,str2,3)

C =

    1

 

因为“hello”和“help”  的前三个字符相同,所以调用strncmp函数时返回1.然而对于字符串数组,这些函数一个单元一个单元地进行比较。例如:

>> A={'book';'pen';'rule'};

>> B={'pencil';'pen';'pencilbox'};

>>strcmp(A,B)

ans =

    0

    1

    0

 

5、    聚合字符串

两个通用的聚合方法是实用MATLAB聚合运算符[ ]或sprint函数。

 >> s=['There are' int2str(num_chars) 'characters here']

s =

There are28characters here

>> s=sprintf('Thereare %d characters here \n',num_chars)

s =

There are 28 characters here

 

 

用strcat函数也可以把两个或更多字符串组合在一起,如:

>> country='China';

>> province='SiChuan';

>> strcat(country,',',province)

ans =

China,SiChuan

 

6、字符分类

   有两个函数可以对字符串中的字符进行分类:

isletter( )确定字符是否为字母

isspace( )确定字符是否为空格,空行。

返回值是0或者1

 

7、    字符串搜索和替换

strrep( )

   findstr( ) 

   strmatch( )

>label='sample 1,04/28/03';

>> newlable=strrep(label,'28','30')%用strrep函数把04/28改为04/30

newlable =

sample 1,04/30/03

>>  label='sample 1,04/28/03';

>> position=findstr('amp',label)

position =

     2

 

strtok( )可用该函数把句子分离成单词。

 

strmatch()函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。

 

>> maxstrings=strvcat('max','minimax','maxinum');

>> maxstrings

maxstrings =

max   

minimax

maxinum

>> strmatch('max',maxstrings)

ans =

     1

     3

 

 

 

总结:Matlab中对字符串的处理

%字符串处理

a=' a';b='b b';c='cccc';m=''

%获取字符串长度

length(a)   

%连接两个字符串,每个字符串最右边的空格被裁切

d=strcat(a,c)

length(d)

%连接多行字符串,每行长度可不等,自动把非最长字符串最右边补空格

   %使与最长字符串相等,会忽略空字符串

e=strvcat(a,b,m)

size(e)

%char连接,空字符串会被空格填满

f=char(a,b,m)

size(f)

 

%strcmp     比较两个字符串是否完全相等,是,返回真,否则,返回假

%strncmp    比较两个字符串前n个字符是否相等,是,返回真,否则,返回假

%strcmpi    比较两个字符串是否完全相等,忽略字母大小写

%strncmpi   比较两个字符串前n个字符是否相等,忽略字母大小写

 

%isletter   检测字符串中每个字符时否属于英文字母

%isspace    检测字符串中每个字符是否属于格式字符(空格,回车,制表,换行符等)

%isstrprop 检测字符每一个字符是否属于指定的范围

a='d sdsdsd 15#';

b=isletter(a)

c=isspace(a)

 

%字符串替换和查找

%strrep进行字符串替换,区分大小写

%   strrep(str1,str2,str3)

%      它把str1中所有的str2字串用str3来替换

 

%strfind(str,patten) 查找str中是否有pattern,返回出现位置,没有出现返回空数组

%findstr(str1,str2)   查找str1和str2中,较短字符串在较长字符串中出现的位置,没有出现返回空数组

%strmatch(patten,str) 检查patten是否和str最左侧部分一致

%strtok(str,char)     返回str中由char指定的字符串前的部分和之后的部分,

mm='youqwelcome';

[mm1,mm2]=strtok(mm,'q')

 

% blanks(n)             创建有n个空格组成的字符串

% deblank(str)          裁切字符串的尾部空格

% strtrim(str)          裁切字符串的开头和尾部的空格,制表,回车符

 

% lower(str)            将字符串中的字母转换成小写

% upper(str)            将字符串中的字母转换成大写

%sort(str)              按照字符的ASCII值对字符串排序

 

%num2str          将数字转换为数字字符串

%str2num          将数字字符串转换为数字

%mat2str          将数组转换成字符串

%int2str          把数值数组转换为整数数字组成的字符数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值