字符串的表示
在MATLAB中,字符串是用单引号括起来的字符序列。MATLAB把一个字符串当作一个行向量,这个行向量中每一个元素对应一个字符,它的引用方法和数值向量相同。
>> name = 'HkSwaggyD';
>> name(1:2)
ans =
Hk
注意:如果字符串中的字符含有单引号,则该单引号字符要用两个单引号表示。
>> 'I''m HkSwaggyD'
ans =
I'm HkSwaggyD
除了一行字符串,MATLAB也支持建立多行字符串,形成字符串矩阵。此时要求各行字符数相等,即列数要相同。因此当各行字符数不相等时,需要用空格来调节各行的长度,使它们的列数彼此相同。
例:建立一个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的子字符串。
② 将字符串倒过来重新排列。
③ 将字符串中的小写字母变成相应的大写字母。
④ 统计字符串中小写字母个数。
>> ch = 'ABc123d4e56Fg9';
>> subch = ch(1: 5) %①
subch =
ABc12
>> revch = ch(end: -1: 1) %②
revch =
9gF65e4d321cBA
>> k = find(ch >= 'a' & ch < 'z') %③先找出小写字母位置
k =
3 7 9 13
>> ch(k) = ch(k) - 32 %小写字母对应的ASCII码要减32
ch =
ABC123D4E56FG9
>> length(k) %④
ans =
4
字符串的操作
MATLAB本身提供了一些函数来完成字符串的操作。
字符串的执行
eval()函数
格式: eval(字符串)
作用:把参数字符串中的内容作为对应的MATLAB命令来执行。
>> x = eval('[pi, sin(pi), cos(pi)]')
x =
3.1416 0.0000 -1.0000
字符串与数值之间的转换
我们知道字符串是以ASCII码的形式存储的,abs()和double()函数都可以用来获取字符串矩阵对应的ASCII码矩阵,char()函数则把ASCII码矩阵转化为字符串矩阵。
字符串的比较
我们可以用关系运算符或字符串比较运算函数来进行字符串的比较。
关系运算符比较(当两个字符串长度相同时)
对两个字符串里的每一个字符依次按ASCII码大小逐一比较,比较结果是一个数值向量,元素由1或0构成,为对应两个字符串里字符比较的结果。
字符串比较函数(用于判断字符串是否相等)
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。
字符串的查找与替换
findstr(s1, s2):返回短字符串在长字符串中的开始位置。
strrep(s1, s2, s3):将字符串s1中的所有子串s2替换为字符串s3。
>> c = 'This is a test.';
>> p = findstr('is', c)
p =
3 6
>> r = strrep(c, 'test', 'class')
r =
This is a class.
>>