MATLAB字符串
在MATLAB中,字符串是作为字符数组来引入的;
一个字符串由多个字符组成,用单引号(’’)来界定;
字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放。
clear
str1='Hello'
str1 =
Hello
str2='I like ''MATLAB''' %重复单引号来输入含有单引号的字符串
str2 =
I like 'MATLAB'
str3='你好!' %支持中文
str3 =
你好!
1. 字符串占用的字节
whos
Name Size Bytes Class
str1 1x5 10 char array
str2 1x15 30 char array
str3 1x3 6 char array
Grand total is 23 elements using 46 bytes
2. 字符串函数
§ length:用来计算字符串的长度(即组成字符的个数)。
§ double:用来查看字符串的ASCII码储存内容,包括空格(ASCII码为32)。
§ char:用来将ASCII码转换成字符串形式。
§ class或ischar:用来判断某一个变量是否为字符串。class函数返回char则表示为字符串,而ischar函数返回1表示为字符串。
§ strcmp(x,y):比较字符串x和y的内容是否相同。返回值如果为1则相同,为0则不同。
§ findstr(x,x1):寻找在某个长字符串x中的子字符串x1,返回其起始位置。
§ deblank(x ):删除字符串尾部的空格。
由于MATLAB将字符串以其相对应的ASCII码储存成一个行向量,因此如果字符串直接进行数值运算,则其结果就变成一般数值向量的运算,而不再是字符串的运算。
length(str1) %字符串长度
ans =
5
x1=double(str1) %查看字符串的ASCII码
x1 =
72 101 108 108 111
x2=str1+1 %字符串的数值运算
x2 =
73 102 109 109 112
char(x1) %将ASCII码转换成字符串形式
ans =
Hello
char(x2)
ans =
Ifmmp
class(str1) %判断变量类型
ans =
char
class(x1)
ans =
double
ischar(str1)
ans =
1
3. 使用一个变量来储存多个字符串
(1) 多个字符串组成一个新的行向量
将多个字符串变量直接用“,”连接,构成一个行向量,就可以得到一个新字符串变量。
clear
str1='Hello';
str2='I like ''MATLAB''';
str3='你好!'
str4=[str1,'! ',str2] %多个字符串并排成一个行向量
str4 =
Hello! I like 'MATLAB'
(2) 使用二维字符数组
将每个字符串放在一行,多个字符串可以构成一个二维字符数组,但必须先在短字符串结尾补上空格符,以确保每个字符串(即每一行)的长度一样。否则MATLAB会提示出错:
str5=[str1;str3]
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
str5=[str1;str3,' '] %将str3添加两个空格
str5 =
Hello
你好!
(3) 使用str2mat、strvcat和char函数
使用专门的str2mat、strvcat和char函数可以构造出字符串矩阵,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。
str6=str2mat(str1,str2,str3)
str6 =
Hello
I like 'MATLAB'
你好!
str7=char(str1,str2,str3)
str7 =
Hello
I like 'MATLAB'
你好!
str8=strvcat(str1,str2)
str8 =
Hello
I like 'MATLAB'
whos
Name Size Bytes Class
str1 1x5 10 char array
str2 1x15 30 char array
str3 1x3 6 char array
str4 1x22 44 char array
str5 2x5 20 char array
str6 3x15 90 char array
str7 3x15 90 char array
str8 2x15 60 char array
Grand total is 186 elements using 350 bytes
5. 执行字符串
如果需要直接“执行”某一字符串,可以使用eval命令,效果就如同直接在MATLAB命令窗口内输入此命令。
str9='a=2*5'
str9 =
a=2*5
eval(str9) %执行字符串
a =
10
6. 显示字符串
字符串可以直接使用disp命令显示出来,即使后面加分号(;)也显示。
disp('请输入2*2的矩阵a')
请输入2*2的矩阵a
disp(str1)
Hello