4字符与字符串.ppt
第四章第四章 字符与字符串字符与字符串本章将介绍对字符本章将介绍对字符、字符串的有关操、字符串的有关操作及命令作及命令.一、基本概念一、基本概念n在在MatlabMatlab中中,多个字符构成一个字符串多个字符构成一个字符串,字符串被视为字符串被视为行向量行向量存储存储,每个字符每个字符,包包括空格符以括空格符以ASCASC码码的形式存放在每个元的形式存放在每个元素中素中,其外显形式则是可读的字符其外显形式则是可读的字符.使用中几个注意点:使用中几个注意点:1.1.MatlabMatlab用单引号用单引号 界定字符串变量界定字符串变量;2.2.含单引号的字符串含单引号的字符串,以重复使用单引号引用以重复使用单引号引用;如如:a=a=I I”veve got a date!got a date!a=I a=Ive got a date!ve got a date!3 3.多个字符串可合并为一个字符串多个字符串可合并为一个字符串,形如形如:str3=str1str3=str1,str2str24.4.ASC ASC码码 字符串字符串 显示形式的转换显示形式的转换,用用doubledouble()(),char,char()()命令命令 举例举例5.5.字符串中字符串中,每字符占每字符占2 2字节字节,16,16位位.举例举例6.6.字符串直接参与数值运算,会变成其所对应的字符串直接参与数值运算,会变成其所对应的ASCIIASCII码参与的一般数值运算,返回的是数值码参与的一般数值运算,返回的是数值而非字符串。而非字符串。7.eval()7.eval()函数:函数:直接执行某特定字符串所包含的命令。直接执行某特定字符串所包含的命令。例例:eval(dateeval(date)8.class()8.class()和和ischarischar()()函数:判定某变量是否为字符函数:判定某变量是否为字符串。串。class()class()的返回值为的返回值为charchar表示该变量为字符串。表示该变量为字符串。ischarischar()()的返回值为的返回值为1 1表示该变量为字符串表示该变量为字符串,反之返反之返回回0 0。举例举例二二、字符串的相关操作、字符串的相关操作strcmpstrcmp()()比较字符串的异同比较字符串的异同语法:语法:strcmp(str1,str2)strcmp(str1,str2)返回返回0,0,表示不同表示不同,返返回回1,1,表示相同表示相同.StrncmpStrncmp()()比较字符串前比较字符串前n n个字符的异同个字符的异同语法:语法:strcmp(str1,str2strcmp(str1,str2,n)n)举例举例举例举例findstrfindstr()():在长字符串找出某子字符串在长字符串找出某子字符串,并返并返回起始位置回起始位置.如如:findstr(str,str1)findstr(str,str1)strrepstrrep()():寻找并替换寻找并替换 如如:strrep(str,strrep(str,str1str1,str2str2)要寻找的串要寻找的串 替换的串替换的串举例举例举例举例数值至字符串的转换数值至字符串的转换Int2str():整数转为字符串整数转为字符串Num2str():实数转为字符串实数转为字符串Sprintf():结合数值和字符串,产生按要结合数值和字符串,产生按要求格式的新字符串。求格式的新字符串。举例举例举例举例举例举例例1:字符变量和数值变量的比较clear%clear%清除所有内存变清除所有内存变a=12345.6789%a=12345.6789%给变量给变量a a赋数值标量赋数值标量class(aclass(a)%)%对变量对变量a a的类别进行判断的类别进行判断a_sa_s=size(asize(a)%)%数值数组数值数组a a的的“大小大小”b=s%b=s%给变量给变量b b赋字符标量赋字符标量class(bclass(b)%)%对变量对变量b b的类别进行判断的类别进行判断b_sb_s=size(bsize(b)%)%符号数组符号数组b b的的“大小大小”whoswhos例2 英文字符串大小写转换a=this is an example.a=this is an example.b=b=size(asize(a)a14=a(1:4)%a14=a(1:4)%提出一个子字符串提出一个子字符串rara=a(end:-1:1)%=a(end:-1:1)%字符串的倒排字符串的倒排ascii_aascii_a=double(adouble(a)%)%产生产生ASCIIASCII码码c=c=char(ascii_achar(ascii_a)%)%把把ASCIIASCII码变回字符串码变回字符串w=w=find(afind(a=a&aa&a=z)%=z)%找出串数组找出串数组a a中,小写字母的元中,小写字母的元素素 位置位置ascii_a(wascii_a(w)=ascii_a(w)-32%)=ascii_a(w)-32%大小写字母大小写字母ASCIIASCII值差值差3232,用,用数值加法改变部分码值数值加法改变部分码值A=A=char(ascii_achar(ascii_a)%)%把新的把新的ASCIIASCII码翻译成字符码翻译成字符例3 中文字符串clearcleara=This is an examplea=This is an exampleA=A=这是一个算例。这是一个算例。%创建中文字符串创建中文字符串A_sA_s=size(Asize(A)A56=A(5 6)%A56=A(5 6)%取串的子数组取串的子数组ASCII_A=ASCII_A=double(Adouble(A)%)%获取获取ASCIIASCII码码char(ASCII_Achar(ASCII_A)%)%把把ASCIIASCII码翻译成字符码翻译成字符b=Example 4.1.2-1b=Example 4.1.2-1abab=a(1:7),b,.%=a(1:7),b,.%这里第这里第2 2个输入为空格串个输入为空格串例4 多行串数组的直接输入示例clearS=This string array;has multiple rowssize(S)例5 字符串转换函数clearclearA=eye(2,4)%A=eye(2,4)%生成数值矩阵生成数值矩阵A_str1=int2str(A)%A_str1=int2str(A)%转换成串组转换成串组rand(state,0)rand(state,0)B=rand(2,4)%B=rand(2,4)%生成数值矩阵生成数值矩阵B3=num2str(B,3)%B3=num2str(B,3)%保持保持3 3位有效数字位有效数字,转换为串转换为串B_strB_str=mat2str(B,4)%=mat2str(B,4)%保持保持4 4位有效数字位有效数字,转换为转换为”数数%组输入组输入形式形式”串串expression=exp(-,expression=exp(-,B_strB_str,)%,)%相当于指令窗写一个表达式相当于指令窗写一个表达式expexp(-B-(-B-strstr)eval(expressioneval(expression)%)%把把exp(-B-exp(-B-strstr)送去执行送去执行