第三章(教材附录A) 字符串数组
字符串数组(以下简称串数组),在MATLAB中的重要性较小,但不可缺少。假如没有串数组及相应的操作,那么数据可视化、图形用户界面GUI的制作将会遇到困难。
3.1字符串的创建
字符串与数值是两种不同的数据类(Class),它们的创建方式不同。数值变量是通过在指令窗中数字赋值创建的。
字符变量的创建方式是:
在指令窗中,先把待建的字符放在“单引号对”中,再按[Enter]键。注意:“单引号对”必须在英文状态下输入!
数值标量在内存中存放时需要8个字节(Byte),而一个字符的存放只需2个字节。
3.1字符串的属性与标识
【例3.1-2】本例演示:串的基本属性、标识和简单操作。
(1)创建串数组
a='This is an example.'
(2)串数组的大小
size(a)
(3)串数组a的元素标识
a14=a(1:4)
ra=a(end:-1:1)
(4)串数组的ASCII码
ascii_a=double(a)
char(ascii_a)
[说明]
● 中文字符能被char和double正确转换。
(5)对字符串 ASCII码数组的操作
w=find(a>='a'&a<='z');
ascii_a(w)=ascii_a(w)-32;
char(ascii_a)
(6)中文字符串数组
A='这是一个算例。';
A_s=size(A)
A56=A([5 6])
ASCII_A=double(A)
char(ASCII_A) %把ASCII 码 翻译成字符这是一个算例。
(7)创建带单引号的字符串
当串中文字包含(英文)单引号时,每个单引号符用“连续的2个单引号符”表示。
b='Example ''3.1.2-1'''
(8)由小串构成长串
ab=[a(1:7),' ',b,' .']
复杂串数组的创建
一、多行串数组的直接创建
在直接创建多行串数组时,关键是要保证同一串数组的各行字符数要相等,即保证各行等长。为此,有时不得不通过空格符的增减来调节各行的长度,使它们彼此相等。
二、利用串操作函数创建多行串数组
【例3.1-4】演示:用专门函数char , str2mat , strvcat创建多行串数组。
S1=char('This string array','has two rows.')
S2=str2mat('这','字符','串数组','由4行组成')
S3=strvcat('这','字符','串数组',' ','由4行组成')
size(S3)
[说明]
这三个函数创建多串数组时,不必担心每行字符数是否相等。它们总会按最长行设置第二维的长度,其他行的尾部用空格填充。
3.2 串转换函数
指令 | 含义 | 指令 | 含义 |
abs | 把串翻译成ASCII码 | hex2dec | 16-进制串转换为十进制整数 |
base2dec | X-进制串转换为十进制整数 | hex2num | 16-进制串转换为浮点数 |
bin2dec | 二进制串转换为十进制整数 | int2str | 把整数转换为串 |
char | 把ASCII码及其他非数值类数据转换成字符串 | mat2str | 数组转换成字符串把数值矩阵转换为eval可调用的格式 |
dec2base | 十进制整数转换为X进制串 | num2str | 把数值转换为串 |
dec2bin | 十进制整数转换为二进制串 | setstr | 把ASCII码翻译成串 |
dec2hex | 十进制整数转换为16进制串 | sprintf | 以控制格式把数值转换成串 |
double | 把任何类数据转还成双精度数值 | sscanf | 在格式控制下把串转换为数 |
fprintf | 把格式化数据写到文件或屏幕 | str2num | 把串转换为数值 |
指令 | 含义 | 指令 | 含义 |
blanks(n) | 创建n个空格串 | lower(s) | 把s里的英文字母全部小写 |
char(s1,s2,…) | 把串s1,s2等逐个写成行,形成多行数组 | str2mat(s1,s2,…) | 把串s1,s2等逐个写成行,形成多行数组,并删除全空行 |
deblank(s) | 删去串尾部的空格符 | strcat(s1,s2,…) | 把串s1,s2等连接成长串 |
eval(s) | 把串s当作MATLAB指令运行 | strcmp(s) | 若串s1,s2相同,则判“真”给出逻辑1 |
eval(s1,sc) | 把串s1当作MATLAB指令运行。若s1 运行发生错误,则运行sc | strjust(s) | 字符串的对齐方式:或右对齐,或左对齐,或对中 |
feval(f, x, y,....) | 对输入宗量x,y等计算函数f | strmatch(s1,s2) | 逐行搜索串s2,给出以s1开头的那些行的行号 |
findstr(s1,s2) | 在较长串中,到短串的起始字符的下标 | strncmp(s1,s2,s3) | 若串s1,s2的前n个字符相同,则判“真”给出逻辑1 |
ischar(s) | s是字符串,则判“真”给出逻辑1 | strrep(s1,s2,s3) | 串s1中的所以出现s2的地方替换为s3 |
isletter(s) | 以逻辑1指示s里文字符的位置 | strtok(s) | 出第一个间隔符(空格、制表位、回车符)前的内容 |
isspace(s) | 以逻辑1指示s里空格符的位置 | strvcat(s1,s2,…) | 把串s1,s2等逐个写成行,形成多行数组 |
lasterr | MATLAB发出的最新错误信息 | upper(s) | 使s里的英文字母全部大写 |
3.3 串操作函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论