当前位置:网站首页>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 6
strrep(s1 , s2 , s3) : 将字符串s1中的所有子字符串s2替换为字符串s3。
>> result = strrep('This is a test!','test','class') result = 'This is a class!'
边栏推荐
猜你喜欢
Promise 一: 基本问题
消费者认可度较高 地理标志农产品为啥“香”
一文了解,从RS485传感器到物联网关到云平台过程
从餐桌到太空,孙宇晨的“星辰大海”
VL53L0X V2激光测距传感器 采集距离数据串口输出
集成学习、boosting、bagging、Adaboost、GBDT、随机森林
三大产品力赋能欧萌达OMODA5
面试突击71:GET 和 POST 有什么区别?
Regulation action for one hundred days during the summer, more than 700 traffic safety hidden dangers were thrown out
2022T电梯修理考试题及答案
随机推荐
2022T电梯修理考试题及答案
Scapy的介绍(一)「建议收藏」
Mysql OCP 74 questions
Promise 二:关键问题
C# Color颜色RGB对照表、颜色选择器
MySQL binlog的这种时间怎么处理呢??
夏季整治百日行动进行时:700余交通安全隐患被揪出
APENFT FOUNDATION官宣2022艺术梦想基金主题征集
Promise 1: Basic Questions
罕见的数学天才,靠“假结婚”才得到追求事业的机会
SQL exam questions
type=“module“ 你了解,但 type=“importmap“ 你知道吗
Mysql OCP 75 questions
Mysql OCP 75题
创建C UDR时,指定的HANDLESNULLS的作用是什么?
进入 SQL Client 创建 table 后,在另外一个节点进入 SQL Client 查询不到
ARIMA实现(亲测可用)
Regulation action for one hundred days during the summer, more than 700 traffic safety hidden dangers were thrown out
金先生谈长效生长激素出海与产品力
LeetCode_二分搜索_简单_367.有效的完全平方数