第2章 MATLAB基础知识——2.4 字符串处理函数

简介: 第2章 MATLAB基础知识——2.4 字符串处理函数

2.4  字符串处理函数


MATLAB中提供了大量的字符串处理函数,如表2-25所示。

2-25  MATLAB中的字符串处理函数

字符串处理函数

函数功能

eval(string)

作为一个MATLAB命令求字符串的值

blanks(n)

返回一个n个零或空格的字符串

deblank

去掉字符串中末尾的空格

feval

求由字符串给定的函数值

findstr

从一个字符串内找出字符串

isletter

字母存在时返回真值

isspace

空格字符存在时返回真值

isstr

输入一个字符串,返回真值

iasterr

返回上一个产生MATLAB错误的字符串

strcmp

字符串相同,返回真值

strrep

用一个字符串替换另一个字符串

strtok

在一个字符串里找出第一个标记


2.4.1  字符串的构造


字符串或字符串数组的构造可以通过直接给变量赋值来实现,具体表达式中字符串的内容需要写在单引号内。如果字符串的内容包含单引号,那么以两个重复的单引号来表示。

在构造多行字符串时,若字符串内容写在[]内,那么多行字符串的长度必须相同;若字符串内容写在{}内,则多行字符串的长度可以不同。


2-55:直接赋值构造字符串示例。

在命令行窗口中输入:

Str_a = 'How are you?',Str_b = 'I don''t know.',Str_c = strcat(Str_a,Str_b)

输出结果:

Str_a =
    'How are you?'
Str_b =
    'I don't know.'
Str_c =
    'How are you?I don't know.'


在命令行窗口中输入:

Str_mat = ['July';'August';'September';]

输出结果:

错误使用 vertcat
要串联的数组的维度不一致。


在命令行窗口中输入:

Str_mat1 = ['U r a man.';'I’m a pen.';],
Str_mat2 = {'July';'August';'September';}

输出结果:

Str_mat1 =
  2×10 char 数组
    'U r a man.'
    'I’m a pen.'
Str_mat2 =
  3×1 cell 数组
    {'July'     }
    {'August'   }
    {'September'}


MATLAB中还提供了strvcatchar函数用于纵向连接多个字符串。在使用strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使得每行字符串的长度相同。char函数与strvcat函数类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数会把空字符串也用空格补偿后再进行连接。


2-56:构造字符串示例。

在命令行窗口中输入:

A = 'top'; B = '';C = 'Bottom';
sABC = strvcat(A,B,C),cABC = char(A,B,C),size = [size(sABC);size(cABC)]

输出结果:

sABC =
  2×6 char 数组
    'top   '
    'Bottom'
cABC =
  3×6 char 数组
    'top   '
    '      '
    'Bottom'
size =
     2     6
     3     6


2.4.2  字符串比较函数


两个字符串之间的关系可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同。


2-57:比较字符串示例。

在命令行窗口中输入:

A = (' Hello ' == ' Word ')

输出结果:

矩阵维度必须一致。


在命令行窗口中输入:

A = (' Hello ' == ' World '),B = (' Hello ' == ' Hello '),
C = strcmp(' Hello ',' World '),D = strcmp(' Hello ',' Hello ')

输出结果:

A =
  1×7 logical 数组
   1   0   0   0   1   0   1
B =
  1×7 logical 数组
   1   1   1   1   1   1   1
C =
  logical
   0
D =
  logical
   1


提示:在使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,因此被比较的两个字符串的长度必须相同;而strcmp函数则根据两个字符串相同与否,返回值为数值01


2.4.3  字符串查找和替换函数


字符串的查找与搜索可以通过findstr函数来实现。


2-58:按下标值查找字符串示例。

在命令行窗口中输入:

String = 'Peter Piper picked a peck of pickled peppers. ';
findstr(String,' ')            % 搜索字符串内的空格位置

输出结果:

ans =
     6    12    19    21    26    29    37    46


在命令行窗口中输入:

findstr(String,'p')         % 搜索字母p

输出结果:

ans =
     9    13    22    30    38    40    41

在命令行窗口中输入:

findstr(String,'cow')         % 搜索单词cow

输出结果:

ans =
     []

在命令行窗口中输入:

findstr(String,'pick')         % 搜索单词pick


输出结果:

ans =
    13    30


提示:findstr函数对字母的大小写是敏感的。另外,findstr函数对字符串矩阵不起作用,因此对字符串矩阵的搜索只能通过循环索引矩阵内的元素实现。

字符串的替换可以通过对字符串数组中相应的元素直接赋值来实现,也可以使用strrep函数来实现。


2-59:替换字符串示例。

在命令行窗口中输入:

String = ' Peter Piper picked a peck of pickled peppers. ';
String(1:12) = ' Helen Smith'

输出结果:

String =
    ' Helen Smith picked a peck of pickled peppers. '


在命令行窗口中输入:

String = strrep(String,' Helen Smith',' Sabrina Crame')

输出结果:

String =
    ' Sabrina Crame picked a peck of pickled peppers. '


提示:直接赋值方法并不能使两个不同长度的字符串相互替换,而使用strrep函数可以替换两个任意长度的字符串。与findstr函数类似,strrep函数也对字符串矩阵不起作用。


2.4.4  字符串数值转换


MATLAB中还提供了大量字符串类型与数值类型之间的转换函数,如表2-26所示。

2-26  字符串类型与数值类型转换函数

函数名称

函数功能

abs

字符转换成ASCII

dec2hex

十进制数转换为十六进制字符串

fprindf

把格式化的文本写到文件中或显示屏上

hex2dec

十六进制字符串转换成十进制数

hex2num

十六进制字符串转换成IEEE浮点数

int2str

整数转换成字符串

lower

字符串转换成小写的

num2str

数字转换成字符串

setstr

ASCII转换成字符串

sprint

用格式控制数字转换成字符串

sscanf

用格式控制字符串转换成数字

str2mat

字符串转换成一个文本矩阵

str2num

字符串转换成数字

upper

字符串转换成大写的


2-60:将数值嵌入字符串示例。

在命令行窗口中输入:

rad = 2.5;area = pi * rad ^ 2;
string = [' A circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . '];
disp(string)

输出结果:

A circle of radius 2.5 has an area of 19.635 .



本章小结


本章介绍了MATLAB的基础知识及一些基本编程的句法形式和函数的使用方法,对MATLAB中的数据类型、矩阵的基本操作、运算符和字符串处理函数分别进行了举例说明,其中矩阵、函数句柄和结构体等内容后续还有更详细的介绍。本章的重点是数值、字符串等的各种操作及相互之间的转换,读者还应熟练掌握各个运算符的运算法则及优先级。


相关文章
|
22天前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
63 0
matlab--------矩阵重构,重新排列的相关函数说明
matlab定点化_(fi函数)
matlab定点化_(fi函数)
|
22天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
22天前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
22天前
|
调度
知识分享|分段函数线性化及matlab测试
知识分享|分段函数线性化及matlab测试
|
22天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
36 0
|
22天前
雷达模糊函数及MATLAB仿真(二)
雷达模糊函数及MATLAB仿真
55 0
|
22天前
雷达模糊函数及MATLAB仿真(一)
雷达模糊函数及MATLAB仿真
53 0
|
22天前
|
算法
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
28 0

热门文章

最新文章