MATLAB字符串数组
基本规则
(1)所有字符串都用单引号(英文状态下输入)括起来;
(2)将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。
(3)size指令获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。
(4)字符串中的字符以ASCⅡ码形式存储,因而区分大小写。
(5)可建立多行字符串,形成字符串矩阵。
例如
String1='welcome to matlab!' %单引号括起来
String1 =
'welcome to matlab!'
String1='9527 welcome to matlab !! '
size(String1)
String1 =
'9527 welcome to matlab !! ' %包含数字,字母,标点符号,空格
ans =
1 26 %长为26
ch=['abcdef';'123456'] %建立多行字符串,形成字符串矩阵
ch(2,3)
ch =
2×6 char 数组 %建立的2行6列的字符串矩阵
'abcdef'
'123456'
ans = %第2行3列的元素为'3'
'3'
abs和double指令可以显示字符数组对应的ASCII码数值数组。char指令则可以把ASCII码数值数组转换成字符数组。
s1='MATLAB';
a=abs(s1) %将字符数组转化为ascll码值数组
b=double(s1)
char(a) %将ascll码值数组转化为字符数组
%输出如下
a =
77 65 84 76 65 66
b =
77 65 84 76 65 66
ans =
'MATLAB'
例题:建立一个字符串向量,然后对该向量做如下处理:
(1)取第1~5个字符组成的子字符串。
(2)将字符串倒过来重新排列。
(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4)统计字符串中小写字母的个数。
clc;
ch='ABc123d4e56Fg9' ;
subch=ch(1:5) %取子字符串
revch=ch(end:-1:1) %将字符串倒排
k=find(ch>='a' & ch<='z') %找小写字母的位置
ch(k)=ch(k)-('a'-'A') %小写字母变成大写
length(k) %统计小写字母的个数
对于上述例题的解释
1.找出的是小写字母的位置,结果输出为3 7 9 13,即在第3 7 9 13的位置是小写字母
k=find(ch>='a' & ch<='z') %找小写字母的位置
2.提出小写字母,输出结果为ans = ‘CDEG’
ch(k) %将小写字母位置上的小写字母提出
ch(k)-('a'-'A')
%将找出的小写字母,ascll码值减去32(即大小写字母的ascll码值差),转换成大写字母
当两个字符串数组进行关系比较时,是将其对应位置的字符的ascll码值进行比较
字符处理函数及其含义
函数名 | 含义 |
---|---|
setstr | 将ASCII码值转换成字符 |
char | 同上,将代替setstr |
mat2str | 将矩阵转换成字符串 |
int2str | 将整数转换成字符串 |
num2str | 将数值转换成字符串 |
str2num | 将字符串转换成数值 |
strcat | 用于字符串的连接 |
abs | 将字符转换成ASCII码 |
eval | 把字符串的内容作为对应的命令来执行 |
findstr(s1,s2) | 返回短字符串在长字符串中的开始位置 |
strrep(s1,s2,s3) | 将字符串s1中的所有子字符串s2替换为字符串s3 |
strcmp(s1,s2) | 用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则 返回0 |
strncmp(s1,s2,n) | 用来比较两个字符串前n个字符是否相等,如果相等,返回1, 否则返回0 |
strcmpi(s1,s2) | 在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相 等,返回1,否则返回0 |
strncmpi(s1,s2,n) | 在忽略字符串大小写前提下,比较两个字符串前n个字符是否 相等,如果相等,返回1,否则返回0 |
具体参数内容可输入help进行查看