字符串
字符串又称为字符数组,由多个字符连接而成。字符串一般用 “ 括起来。
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 把数值数组转换为整数数字组成的字符数组