![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=1739314688-3u4lCcA20FyrSUDHNNgIPqxAG4qfnrYg-0-4ea7e155b8787e7cd9750169c1f00472)
2.4.1 字符串的构造
字符串或字符串数组的构造可以通过直接给变量赋值来实现,具体表达式中字符串的内容需要写在单引号内。如果字符串的内容包含单引号,那么以两个重复的单引号来表示。
在构造多行字符串时,若字符串内容写在[]内,那么多行字符串的长度必须相同;若字符串内容写在{}内,则多行字符串的长度可以不同。
例2-55:直接赋值构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_262.jpg?sign=1739314688-lewhzHD7vfuMT8FvZr2jDoBy6hFuVYeB-0-95bb5d0953073d76c1a545341e1657bc)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_263.jpg?sign=1739314688-h4K8nnM747hFpdVS5tAWX2gmrfyg5lDU-0-509c6f3fdcca14db42440a575771b384)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_264.jpg?sign=1739314688-kA1Diw0Vzic7OIt8JHGSYNcKhuOlkHiy-0-0de6c881aa751a63f90ed84a97c4b618)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_265.jpg?sign=1739314688-D61OyMc00eERceKKjkJ1olBLsLSm2RjE-0-a42042b7fc27fc5a18a9789dfac81eb8)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_266.jpg?sign=1739314688-PsW4XnSWk6YJh0wl5y7u1F8siK9B0MMA-0-c198ef4905418ed50e7b537543c0a2da)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_267.jpg?sign=1739314688-Z4s2Dt9uY6URNmqn7mgPveUUEf3UwAXo-0-5602ba5036c6cbb4a5c4c790f673a692)
MATLAB中还提供了strvcat和char函数用于纵向连接多个字符串。在使用strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使得每行字符串的长度相同。char函数与strvcat函数类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数会把空字符串也用空格补偿后再进行连接。
例2-56:构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_268.jpg?sign=1739314688-CUZngqTbaABhFmuYswxHSjvOdCyuA75k-0-94cffa508cf89bfbaf6568715ad6f3a9)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_269.jpg?sign=1739314688-iUm8s8DPmLG70MCcfZoIyuPJScW3ZX6K-0-2ac2458cb80b4c9b08ffdd9fe25e28a1)
2.4.2 字符串比较函数
两个字符串之间的关系可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同。
例2-57:比较字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_270.jpg?sign=1739314688-xjplm8Lj791RnCyYBM6qydWQUlyjNm3a-0-d134303f5e2e277960ae1d514b0d4840)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_271.jpg?sign=1739314688-NBzjD3KjpMwbRGmKQa7CAP5pfwKwbUNp-0-5a75ed61014626e9c680f3f4ff547bd7)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_272.jpg?sign=1739314688-1FK2eO9veqLaSUCYdElUYEq9xbboifw6-0-a37d7fb6cb198ad38b821d34feb0d399)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_273.jpg?sign=1739314688-OO1Eiedz5dCGvnxqHMPWaHgtHnPyHh5W-0-0b712a335524dd86d2d93cc043221c01)
○提示
在使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,因此被比较的两个字符串的长度必须相同;而strcmp函数则根据两个字符串相同与否,返回值为数值0或1。
2.4.3 字符串查找和替换函数
字符串的查找与搜索可以通过findstr函数来实现。
例2-58:按下标值查找字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_274.jpg?sign=1739314688-wuQkQ3ifAh87VdWv1nOgprPYatnSxS1C-0-6fc7a4f2da385ca5c717a1d9735cb6f5)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_275.jpg?sign=1739314688-5zYebHR7Lvhlf1CPtzQANehnBwWVDyFU-0-208bc2be8092794a52c892cc463a7823)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_276.jpg?sign=1739314688-pNgQjDVnd4RXLIfbEMc4rREH6xvCOuSn-0-22f1f8924aaadce82e401f197a479333)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_277.jpg?sign=1739314688-ZZcAerRspDhPTq6avIU6aBDyS6i6w0UL-0-b447d5ab43835f1b7174760049c3977b)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_278.jpg?sign=1739314688-v8OZwc8RMxXfXUFHVUFdNffR6O2sGoxf-0-e707cea5529575df4d9b6bc32b5a2875)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_279.jpg?sign=1739314688-R89RpFgvs8P7saLzjSm54tDRaMlwfhcj-0-6fd69406b566015db9b12d8b8e41cf0f)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_280.jpg?sign=1739314688-auvjZDxvk4N9zmi7FeEBUjdswok4wZV2-0-278fd753721651f498642b3d15e5330e)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_281.jpg?sign=1739314688-r6llAG9FqnwfWHu9FKXJ9WwV5VrOg2nQ-0-a9a23bb556988140dd577890f6037895)
○提示
findstr函数对字母的大小写是敏感的。另外,findstr函数对字符串矩阵不起作用,因此对字符串矩阵的搜索只能通过循环索引矩阵内的元素实现。
字符串的替换可以通过对字符串数组中相应的元素直接赋值来实现,也可以使用strrep函数来实现。
例2-59:替换字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_282.jpg?sign=1739314688-0TFjLNzbzpIFZyfq1RY6LU6y3DQKzEcL-0-a4677f4edf1251312143b70adfcf58b9)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_283.jpg?sign=1739314688-EJbG14sEF7SyI4f8zGWQjaJkBsLCQJP0-0-4653487fa882fc92e47e5cc343d123df)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_284.jpg?sign=1739314688-B9WIxxOMZu6HwHmMjYFhKQ9eElQlw7q6-0-bb466a68a3e9e005a8f8686627e0fc76)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_285.jpg?sign=1739314688-iMw547tou9YjQ6Il9GAAQNnvugadoATP-0-bd01074ddc639857e00faaedd5a64349)
○提示
直接赋值方法并不能使两个不同长度的字符串相互替换,而使用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=1739314688-MNcXjOVExzKrq0D7BDgBElvauEUysbLy-0-02c361b7afc5aaeddd5d8c93d633c6c3)
例2-60:将数值嵌入字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_287.jpg?sign=1739314688-JRjVdPa7OeDx1Y7bwBIjY2XowsLdHydq-0-72fbcaab4193b242243585a06c35ac8a)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_288.jpg?sign=1739314688-QxGnbQRg64gryDVbEmXMVmuJ6yJg2ZPP-0-d464c6d5364acea75b6487c2587e3468)