当前位置:网站首页>MATLAB程序设计与应用 2.6 字符串
MATLAB程序设计与应用 2.6 字符串
2022-08-03 10:30:00 【Ding Jiaxiong】
MATLAB程序设计与应用
2. 第2章 MATLAB数据及其运算
2.6 字符串
实际应用中,有两种基本的数据类型,一个是数值型数据,一个是字符型数据或称字符串数据。数值型数据比较好理解,是指能参与数值运算的数据,又分为整型、浮点型和复数型。字符型数据在日常应用中则不太强调,但却是大量存在的,例如统计一篇英文文章中不同英文字母出现的次数,按姓名排序,等等。字符串数据由若干个字符组成,这些字符可以是计算机系统中允许使用的任何字符。
2.6.1 字符串的表示
在 MATLAB中,字符串是用单引号括起来的字符序列。
>> xm = 'Hello world'
xm =
'Hello world'
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
>> 'I''m a student.'
ans =
'I'm a student.'
MATLAB将一个字符串当作一个行向量,每个元素对应一个字符,其引用方法和数值向量相同。
>> A = 'ABCDEF';
>> A(1:3)
ans =
'ABC'
建立多行字符串,形成字符串矩阵。
>> ch = ['abcdef';'123456']
ch =
2×6 char 数组
'abcdef'
'123456'
>> ch(2,3)
ans =
'3'
这里要求各行字符数要相等。为此,有时用空格来调节各行的长度,使它们彼此相等。
例子:建立一个字符串向量,然后对该向量做如下处理。
- 取第1~~5个字符组成的子字符串。
- 将字符串倒过来重新排列。
- 将字符串中的小写字母变成相应的大写字母,其余字符不变。
- 统计字符串中小写字母的个数。
>> ch = 'ABc123d4e56Fg9';
>> subch = ch(1:5); % 取子字符串
>> subch
subch =
'ABc12'
>> revch = ch(end:-1:1) %将字符串倒排
revch =
'9gF65e4d321cBA'
>> k = find(ch >= 'a' & ch <= 'z') % 找出小写字母的位置
k =
3 7 9 13
>> ch(k) = ch(k) - ('a' - 'A') %根据位置将小写字母变成相应的大写字母
ch =
'ABC123D4E56FG9'
>> length(k) %小写字母的个数
ans =
4
2.6.2 字符串的操作
字符串的执行 eval(s)
与字符串有方的一个重要函数是 eval,它的作用是把学符串的内容作为对应的 MATLAB的命令来执行。
>> t = pi; >> m = '[t,sin(t),cos(t)]'; >> y = eval(m) y = 3.1416 0.0000 -1.0000字符串与数值之间的转换
字符串是以ASCHI码形式存储的,abs和 double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把 ASCI码矩阵转换为字符串矩阵。
>> s1 = 'MATLAB'; >> a = abs(s1) a = 77 65 84 76 65 66 >> char(a + 32) ans = 'matlab'MATLAB还有许多用于字符串和数值数据之间转换的函数:
- setstr 函数将ASCII码值转换成对应的字符
- str2num函数或str2double函数将数字字符串转换成数值
- num2str函数将数值转换成字符串
- int2str函数将整数转换成字符串。
字符串的连接
在 MATLAB中,要将两个字符串连接在一起,有两种常见方法:一是用字符串向量,二是用strcat函数。
用字符串向量可以将若干个字符串连接起来,即用中括号将若干个字符串括起来,从而得到个更长的字符串。
>> f = 70; >> c = (f - 32) / 1.8; >> ['Room temperature is ',num2str(c) , ' degrees C.'] ans = 'Room temperature is 21.1111 degrees C.'strcat的数可以将若干个字符串连接起来。
>> strcat('ss','ff','DD','1234') ans = 'ssffDD1234'字符串的比较
字符串的比较有两种方法:利用关系运算符或学符串比较函数。
当两个字符串拥有相同的长度时,可以利用关系运算符对字符串进行比较,比较的规则是按ASCII值大小逐个字符进行比较,比较的结果是一个数值向量,其元素为对应字符比较的结果。
>> 'www0' >= 'W123' ans = 1×4 logical 数组 1 1 1 0字符串比较函数用于判断字符串是否相等,有4种比较方式:
- strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
- strncmp(s1,s2,n):用来比较前n个字符是否相等,如果相等,返回1,否则返回0。
- strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
- strcmpi(sl,s2,n):在忽略字符串大小写前提下,比较前n个字符是否相等,如果相等,返回1,否则返回0。
>> strcmp('www0','W123') ans = logical 0 >> strncmpi('www0','W123',1) ans = logical 1字符串的查找与替换
MATLAB提供了许多函数,用来对字符串中的字符进行查找与替换。
findstr(s1 , s2) :返回短字符串在长字符串中的开始位置。
>> p = findstr('This is a test!','is') p = 3 6strrep(s1 , s2 , s3) : 将字符串s1中的所有子字符串s2替换为字符串s3。
>> result = strrep('This is a test!','test','class') result = 'This is a class!'
边栏推荐
猜你喜欢
随机推荐
ECCV2022 | RU&谷歌:用CLIP进行zero-shot目标检测!
QT with OpenGL(HDR)
问下flink -sql 通过cdc抽取数据怎么能更快的抽取数据写到目标端?如何配置?
如何将Oracle/MySQL中的数据迁移到GBase 8c中?
C language two-dimensional array is called with one-dimensional array
GO开发环境配置
Mysql OCP 27题
月薪没到35K的程序员必须要背的面试八股,我先啃为敬!
Enter the SQL Client to create the table, in another node into the SQL Client queries
Mysql OCP 75题
金先生谈长效生长激素出海与产品力
三大产品力赋能欧萌达OMODA5
SQL试题
This article understands the process from RS485 sensor to IoT gateway to cloud platform
Mysql 主从复制 作用和原理
Scapy的介绍(一)「建议收藏」
面试突击71:GET 和 POST 有什么区别?
Leecode-SQL 1527. 模糊查询匹配(模糊查询用法)
几款永久免费内网穿透,好用且简单_内网穿透平台
sql server 批量更新数据多张表 更高效的方法









