![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=1738873827-ahHXqQMK1RweGre2RaTeHpctcdAyUkCG-0-b2c41e4bae5ce22462c4d96dcec6556b)
2.4.1 字符串的构造
字符串或字符串数组的构造可以通过直接给变量赋值来实现,具体表达式中字符串的内容需要写在单引号内。如果字符串的内容包含单引号,那么以两个重复的单引号来表示。
在构造多行字符串时,若字符串内容写在[]内,那么多行字符串的长度必须相同;若字符串内容写在{}内,则多行字符串的长度可以不同。
例2-55:直接赋值构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_262.jpg?sign=1738873827-JhQaZiJlGuqxsLGP8mbxGmBcsCytdCfi-0-92f034ba649f111b1a73460233ff81db)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_263.jpg?sign=1738873827-ru9aTjl8U0JNWO2CpEbCpYj53RBz4Tsk-0-930aec9ec8c7628971dbd35f9a520a99)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_264.jpg?sign=1738873827-ENIAwwoBRUr9rOxvUqw9YgdxfncblKo7-0-97040e34d26d0b57f1873f8d4cf32577)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_265.jpg?sign=1738873827-usjwWadxAuYaAmkPQq90XyHzuXBvy2Ve-0-0822ff55cbdc16c4bda73e8c801ddade)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_266.jpg?sign=1738873827-yIFyEoV5u3PGNB6HMuynYM7oIFndW6DL-0-7073e8446dd012aeea263b64ab7e4653)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_267.jpg?sign=1738873827-DsG0NrA8tZof62ifZ7SWEzEy2KYYittg-0-c99fec8ce875bb2b4061a4c065e35304)
MATLAB中还提供了strvcat和char函数用于纵向连接多个字符串。在使用strvcat函数连接多行字符串时,每行字符串的长度不要求相等,所有非最长字符串的右边会自动补偿空格,使得每行字符串的长度相同。char函数与strvcat函数类似,不过当多行字符串中有空字符串时,strvcat函数会自动进行忽略,而char函数会把空字符串也用空格补偿后再进行连接。
例2-56:构造字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_268.jpg?sign=1738873827-nCj3gCANqShxZ2IFQM3EYVXkaRmwuXGG-0-ea046af5cd59f97fc5a15d9d8d9850a1)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_269.jpg?sign=1738873827-cEKq5KTaPDgCpFGelDF3OlJO7ga06Xq6-0-5214da03a1acd4ec9d80711bf51c4f1f)
2.4.2 字符串比较函数
两个字符串之间的关系可以通过关系运算符来比较,也可以使用strcmp函数来比较两个字符串是否相同。
例2-57:比较字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_270.jpg?sign=1738873827-spQik11lrYHzc4HqJ15aMtaSegae0u83-0-e39d6771109551310fb7efa12004aac4)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_271.jpg?sign=1738873827-hEwsXlUUkXjHZtACHruigryQSccu3Uw9-0-e4f7c407b316477aaaa6b792b21f1978)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_272.jpg?sign=1738873827-YvaBuGHiiJIxlyUkkgquBhhrfDfbxsMP-0-d20e2ba660a0b909354bc627e551d97f)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_273.jpg?sign=1738873827-Uflz8g5pUZe8E4mZsgxXHji1zIYJPgrP-0-12166bc76f4379da1a670eb2352df4c6)
○提示
在使用关系运算符进行比较时,会对字符串的每个字符进行比较,返回值是一个与字符串长度相同大小的数组,因此被比较的两个字符串的长度必须相同;而strcmp函数则根据两个字符串相同与否,返回值为数值0或1。
2.4.3 字符串查找和替换函数
字符串的查找与搜索可以通过findstr函数来实现。
例2-58:按下标值查找字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_274.jpg?sign=1738873827-5v5k9t1VBG946WbyVYTLRBW94ccrsyOA-0-bd58bbeff43fbfc140208553a857c816)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_275.jpg?sign=1738873827-mLMGOsbzV0tzaVZKMDSFpGgNgKFdlvoK-0-ee2e5412863d18fb7d2e3055ac276f41)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_276.jpg?sign=1738873827-zV7nOXmJKtG7aQaWSdZmgHxYpUf08LCj-0-32b0a75f7bcd69e69671263486ea7151)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_277.jpg?sign=1738873827-SlDocNI2PfGYdQRgm8u50jYMq9n367jy-0-e4fc7e8c9265b3d10e366c3ce7726408)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_278.jpg?sign=1738873827-LIbfcTF1iOkjoL71VWFD2jnyg7pC16OA-0-eb3c754109b043edf8fd63345da95aeb)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_279.jpg?sign=1738873827-T9cv0ENv734Zpj8YfF4FMz0LkQJ5EYGQ-0-ec9739cc63869ebcb33f13a5635e21a6)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_280.jpg?sign=1738873827-G5EqLrRGbWTvwqxCr7aunABb4HwBpHRb-0-f16ccec6304ea6a4ee2a61b2467b8fbd)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_281.jpg?sign=1738873827-lvBrC84gfQiqRjHlI9kSoyetK8VFYgiI-0-390756f85848d7dce6d3af4c4e24c1f9)
○提示
findstr函数对字母的大小写是敏感的。另外,findstr函数对字符串矩阵不起作用,因此对字符串矩阵的搜索只能通过循环索引矩阵内的元素实现。
字符串的替换可以通过对字符串数组中相应的元素直接赋值来实现,也可以使用strrep函数来实现。
例2-59:替换字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_282.jpg?sign=1738873827-f8jj52XcCw0946ykVudD2GtGSRtcBV2m-0-159c2e06d5bf20b6a7fc0bf7b14b091e)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_283.jpg?sign=1738873827-KvthyDUzqp188I4ElUOfR916YsAKN3De-0-bc302367d23583d69a3297298d33c2e6)
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_284.jpg?sign=1738873827-loo9FDQst2xwem8SrjKewazUdkJdVX3I-0-b5946deb43c44f63861815c81d2611b5)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_285.jpg?sign=1738873827-vJp8iVrFiqMLUTNbqYeoL03ZFna8ItIt-0-2304521e815627051ba8f1d664cf640d)
○提示
直接赋值方法并不能使两个不同长度的字符串相互替换,而使用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=1738873827-t5SEECNLxeZkyJEgzysmV5OKDNYCtJWE-0-98bbae0a002ced627fe363ac3670640d)
例2-60:将数值嵌入字符串示例。
在命令行窗口中输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_287.jpg?sign=1738873827-ZfkJlIr3HPp0DlKXqJOmwBeYsXQhakAu-0-8921fb55e898cddf0de3341660c582c0)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt004_288.jpg?sign=1738873827-8AH3b8PCSwar8CxLtACtcCjd4jj3tNsl-0-005dd5bca2edd49af125f5af5efd0b07)