1.7 字符串处理

写在前面:作者本人是纯纯的菜鸟,学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》,欢迎各位大佬或新手在这里和平讨论,如果我有错误请各位不吝赐教,提前感谢各位捧场!


MATLAB不仅仅处理数值数据,还会处理字符型数据(或者叫字符串数据)。

一、字符串的表示

何为字符型数据?在MATLAB中,字符串数据是用单引号括起来的字符序列。

1.建立一行字符串

str='hello';
%str就是一个字符串数据
str(1:3)
%字符串的引用类似于矩阵,一个字符串相当于一个行向量,每一个字符都占有一个位置
%例如,在上行命令中表示引用前三个字符

若字符串中包含一个单引号元素,则需要用两个单引号来表示

x='I''m good.'
%用两个单引号表示字符串中的一个单引号

2.建立多行字符串,行程字符串矩阵

使用要求:每行字符串长度都要相同,若不相同必须手动补齐空格,否则会报错

例题:建立一个字符串向量,然后做以下处理:

  1. 取出第1~5字符,组成一个新的字符串;
  2. 将字符串倒过来重新排列;
  3. 将字符串中的小写字母变成大写字母,其余不变;
  4. 统计该字符串中小写字母的个数
ch='aBCd1ji344GL'
%构造一个字符串
ch1=ch(1:5)
%第1题:取出前五个字符组成新的字符串
ch2=ch(end:-1:1)
%第2题:将字符串倒序排列,即从最后一位开始步长为-1排到第一个元素
k=find((ch>='a')&(ch<='z'))
%标记其中所有小写字母在字符串中的序号
ch(k)=ch(k)-('a'-'A')
%众所周知,小写字母的ASCⅡ比大写字母的大
%因此将小写字母转换为大写字母仅需减掉其中的差值32即可
%此时ch即为第3题所需的新字符串
length(k)
%第4题:统计小写字母的个数即统计k向量中元素的个数,即k的长度

二、字符串的操作

1.字符串的执行

eval(s)函数:将参数字符串中的内容作为对应的MATLAB命令来执行。

使用方法

t=pi;
m='[t sin(t) cos(t)]';
y=eval(m);
%所得结果为y是一个行向量,其中元素分别为pi,sin(pi),cos(pi)即pi,0,-1 

2.字符串与数值之间的转换

字符串转换为ASCⅡ码值在第一节已经讲到过,使用abs()函数 或double()函数;

ASCⅡ码值转换为字符串则使用char()函数。

3.字符串比较

两种方法:关系运算符字符串比较函数

比较规则:

(1)关系运算符比较:将两个字符串中的所有字符按照ASCⅡ码值逐个进行比较,得到一个与原字符串长度相同且仅含有0或1的行向量。例如:'Www1'>'wWW2'比较结果为0 1 1 0

(2)字符串比较函数:比较结果仅为0或1的数值

常用的字符串比较函数及其使用

strcmp(s1,s2)
%判断两字符串是否相等,相等则输出1,反之,输出0;
strncmp(s1,s2,n)
%判断两字符串前n个字符是否相等,相等则输出1,反之,输出0;
strcmpi(s1,s2)
%忽略大小写前提下,判断字符是否相等,相等则输出1,反之,输出0;
strncmpi(s1,s2,n)
%忽略大小写前提下,判断两字符串前n个字符是否相等,相等则输出1,反之,输出0;

例如:strcmp('www0','www1')输出结果为0

strncmpi('abcd','Ahj5',1)输出结果为1

4.字符串查找与替换

a.字符串查找

findstr(s1,s2)
%返回短字符在长字符中出现的开始位置
%注:s1和s2顺序没有影响,MATLAB会自动判断长短
%记忆方式:find string ->查找字符串

b.字符串替换

strrep(s1,s2,s3)
%将s1中所有的s2字符全部转换为s3
%记忆方式:string replace ->字符串替换(取代)

这就是今天的全部内容了,再次感谢各位耐心看到这里!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值