慕课matlab学习 第二章-06

字符串处理和字符型数据


% 第二节
% 字符串处理和字符型数据

% matlab是用单引号括起来的字符序列
% eg

xm='university' %这个一个一维的字符串数组
xm(1:3) %取这个字符串的第1到第3个字符串之间的子字符串
%在字符串中使用’号的处理 
%eg: 输出  I'm a teacher !
prefession='I''m a teacher !' %输出 '号,多加一个 '' 冒号,类似于C语言中的 \" \'的输出形式

%字符串矩阵
ch=['abcdef';'123456']
%获取特定的字符
ch(1,2) %得到的是第1行,第2个字符



% 应用
% 1、建立一个字符串
% 2、取该字符串的1~5个字符组成的子字符串
% 3、子字符串倒过来重新排列
% 4、 字符串中小写字母变成大写字符,其余不变
% 5、统计字符串中的小写字母的个数

% eg;
ch='ABc123d4e56Fg9'     % 1、创建一个字符串
subch=ch(1:5)           % 2、取得子字符串 ch(end:-1:1)分析:重最后一个字符开始,每次步长-1,取到第一个字符结束
revch=ch(end:-1:1)      % 3、子字符串倒过来重新排列
k=find(ch>='a'&ch<'z')  % 4、先找到小写字符的下标序号
ch(k)=ch(k)-('a'-'A')   % 4、将该序号的小写变成大写字符
ch                      % 4、查看修改后的字符是否变成了大写字符
length(k)               % 5、统计小写字符的个数,k向量统计的是小写字符的序号,也就是说,K向量由多长,小写字母就有多少个

%字符串的执行
% eval(s) matlab 命令
% eg:
t=pi
m='[t,sin(t),cos(t)]' %创建了一个字符串
y=eval(m)  %将该字符串以matlab语法进行执行

%字符串和数值之间的转换
% 具体来说是 ASCII码和数值之间的转换  如 'A'=65 左边是字符,右边是ASCII码的字符
% eg:
s1='MATLAB'
a=abs(s1)
s2=char(s1+32) %大写字母加32就会变成小写字母,具体请看ASCII码表对应的值


%字符串比较
% 两种方式 : 关系运算符 和 字符串比较函数
% 关系运算符 比较条件 :两个字符串长度相等


% 关系运算符比较完以后会得到一个数值向量 ,向量里面的值要么是1 要么是0
% eg 
s1='MATLAB'
s2='Matlab'
s1>s2  %这里输出的也是一个向量,和比较的字符串长度是一致的
s1==s2


%字符串比较函数
% 四种比较方式 
% 1、strcmp(s1,s2) 比较S1 和 S2 是否相等,如果相等,返回1,否则返回 0
% 2、strncmp(s1,s2,n) 比较字符串前 n个字符是否相等,如果相等,返回1,否则返回 0
% 3、strcmpi(s1,s2); 忽略大小写的前提下,比较S1 和 S2 是否相等,如果相等,返回1,否则返回 0
% 4、strncmpi(s1,s2,n) 忽略大小写的前提下,比较字符串前 n个字符是否相等,如果相等,返回1,否则返回 0

% eg 
s1
s2
strcmp(s1,s2) % 1、
strncmp(s1,s2,1) %2、
strcmpi(s1,s2) %3、
strncmpi(s1,s2,5) %4、



%字符串的查找和替换
% findstr(s1,s2) 返回短字符串在长字符串中开始的位置
% strrep(s1,s2,s3) 将字符串S1中所有的子字符串s2替换为字符串s3
% eg
p=findstr('This is a test !','is')
p=findstr('is','This is a test !') %二者输出的结果是一样的

%在字符串中找到 'test'字符,随后将 'test'字符替换成 'calss'字符
result=strrep('This is a test !','test','class')




更多文章请关注《万象专栏》