![MATLAB R2020a完全自学一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/483/34667483/b_34667483.jpg)
2.4 字符串处理函数
MATLAB中提供了大量的字符串处理函数,如表2-25所示。
表2-25 MATLAB中的字符串处理函数
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_261.jpg?sign=1739682072-RRO36ZIN1uCelx7Ud7dT51Ud1yc57zLJ-0-b1bdbd72fe014573694f15893e79320b)
2.4.1 字符串的构造
字符串或字符串数组的构造可以通过直接给变量赋值来实现,具体表达式中字符串的内容需要写在单引号内。如果字符串的内容包含单引号,那么以两个重复的单引号来表示。
在构造多行字符串时,若字符串内容写在[]内,那么多行字符串的长度必须相同;若字符串内容写在{}内,则多行字符串的长度可以不同。
例2-55:直接赋值构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_262.jpg?sign=1739682072-UgNvRd5p28Iia4MHkppjT4hb504aC36D-0-77eba0547721001a425d890499884bc6)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_263.jpg?sign=1739682072-pmc2wVvpjUFJ4R7zv4WwNeR5scEAKXwV-0-d2518b73da0fe5a09f36ee2c30e766f1)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_264.jpg?sign=1739682072-dZLA1ODPCOdCZVj81ZQaOTMejhOoKypt-0-29face7a0a02d43eedf58c56116a7c1b)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_265.jpg?sign=1739682072-qLVolcJNBFHZ1YPeynq2vEcM7NmujLZ4-0-a93abf60ade1efec71dd056177f9d08e)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_266.jpg?sign=1739682072-JsycXvlFlgwsexEoCCy5HLuuKJWtiF2M-0-6a1a38a9e6e117e5d9d2e713f108bd5a)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_267.jpg?sign=1739682072-icZvDRURclFWtvVw81mau3TiBNCW0k4V-0-82ab28a75d49df6760c6bf5ab8508b24)
MATLAB中还提供了strvcat和char函数用于纵向连接多个字符串。在使用strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使得每行字符串的长度相同。char函数与strvcat函数类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数会把空字符串也用空格补偿后再进行连接。
例2-56:构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_268.jpg?sign=1739682072-nNHFl5Lr0WOb68UwhSJX8Hkl442LAjTw-0-f75c7cd697ce375692d8a0d9b5d18e54)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_269.jpg?sign=1739682072-KuGbvRCKXkVO1Q9NfNildhGlQlQr7Hhw-0-e8ce0c8792271e6ab6fc32398dd59ca6)
2.4.2 字符串比较函数
两个字符串之间的关系可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同。
例2-57:比较字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_270.jpg?sign=1739682072-kf1GQAKYUWcL3wLLA5vpNF6GiJ1Ts3P3-0-405c16f61e7f2087bfe070f200e3bf70)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_271.jpg?sign=1739682072-fHZGxGLVrc7EwJEuSX820ukqZky9H2ir-0-54b2387dac08668897fd4034c99657f6)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_272.jpg?sign=1739682072-Dq7254TERNqASJrWfFvZysIOMNoqWANd-0-de8f9688f57c22d239e190c963d641f3)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_273.jpg?sign=1739682072-D95py9DwMlIy62NRdsNV0bBwtcbDQYuY-0-7b13a1343d5028c4874d76856c7e3e01)
○提示
在使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,因此被比较的两个字符串的长度必须相同;而strcmp函数则根据两个字符串相同与否,返回值为数值0或1。
2.4.3 字符串查找和替换函数
字符串的查找与搜索可以通过findstr函数来实现。
例2-58:按下标值查找字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_274.jpg?sign=1739682072-3Ye7Ag3EmQLDm5m3WJqI4msW7ZmgYDrV-0-56cbe54585d0abc75d700175626257dd)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_275.jpg?sign=1739682072-MlC9VDFZGwO6wkcX6ljsA6DEnHm3vBpz-0-602ccf1d50c79f965d54e8705658ca1e)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_276.jpg?sign=1739682072-1ByDy0hHaelBUKY6oDrLxSIeQoq50M64-0-b3a948f9c215fe25f08efca2892d745d)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_277.jpg?sign=1739682072-fiqPOijGdCJPGBypPjgKMYBF9NYhIdS1-0-47a4441b9c9a0dc61d33a8142280b688)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_278.jpg?sign=1739682072-A2nkwd52CcjGrp9NB9N9mCoJN0KIeOMP-0-b3505fb7d90ba6bae67f137f8709a552)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_279.jpg?sign=1739682072-jkhBNTyQgKGurAQLhPFOuCoSlmGC68iq-0-46c100fdf729ddf753904d6a59522f0f)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_280.jpg?sign=1739682072-qWAAQGMw3nifkgq0dTuKIFacFh5lVn8a-0-342311ce02b68de993a81d567d59220d)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_281.jpg?sign=1739682072-U5EPGprq0NoByN7jtqFwAdylGuU3Hs72-0-3ba907bc79ea994139d1e4e51a7187cf)
○提示
findstr函数对字母的大小写是敏感的。另外,findstr函数对字符串矩阵不起作用,因此对字符串矩阵的搜索只能通过循环索引矩阵内的元素实现。
字符串的替换可以通过对字符串数组中相应的元素直接赋值来实现,也可以使用strrep函数来实现。
例2-59:替换字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_282.jpg?sign=1739682072-n3DxzY8MGsP09ogsiAnVluw2Er8Svq2q-0-a9748a44f5febf76c12d7b1826e24d45)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_283.jpg?sign=1739682072-ffmERHiVqqzWxvcX0ySWaZdxw3CvcWxN-0-ab5a6daa53086e7024ab125fad55c6fa)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_284.jpg?sign=1739682072-dhTLK3gaFAltrdY5Ni4GcRlKotVdd7Ly-0-0a203ed9a1ae3001271b78cde5993576)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_285.jpg?sign=1739682072-wvYedIDXpUqeayU1FON294eym6j6uXHY-0-b1acdcb263506e40cff8902fd9dafaad)
○提示
直接赋值方法并不能使两个不同长度的字符串相互替换,而使用strrep函数可以替换两个任意长度的字符串。与findstr函数类似,strrep函数也对字符串矩阵不起作用。
2.4.4 字符串—数值转换
MATLAB中还提供了大量字符串类型与数值类型之间的转换函数,如表2-26所示。
表2-26 字符串类型与数值类型转换函数
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_286.jpg?sign=1739682072-1dJHnhWb8BPFUmvIFGZq5xTsYsKMRYqI-0-336fe052c11c220aef0646c75e8a5e91)
例2-60:将数值嵌入字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_287.jpg?sign=1739682072-JqTWMJklxd5OTe65MFqO4g8yybm5cE4j-0-11d305311abaf593b421716a1057a1be)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_288.jpg?sign=1739682072-iFR8r6RMKhXIpHJqRIs5hlLgJhcqzh5k-0-0143241f51425825006d0d25f0e1e6cc)