![MATLAB R2020a从入门到精通(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/74/38507074/b_38507074.jpg)
7.1 字符串的创建
一个MATLAB字符串是一个char型数组,每个字符占2字节。当字符串被赋予一个变量时,这个变量将被自动创建为字符变量。
7.1.1 创建字符数组
可以用一对单引号来表示字符串,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_1.jpg?sign=1739338426-suFFUqZwZT83Nsrrofiz5TfXxwGRgOuw-0-ce95b0fdeeca452c4ce128e3985d98f3)
也可以用字符串合并函数strcat()来得到一个新的字符串,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_2.jpg?sign=1739338426-g0TuomBvZfzLfXkbFhZmTTa5rBSKXONc-0-2f57138c050621bbb6a0950b0dcdd891)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_3.jpg?sign=1739338426-9kmPTPidPeIoWlVEJcRw4teHoIIzuHY4-0-2700844ff7cd1ebb339b59715f02ee86)
注 意
使用strcat()函数在合并字符串时会把字符串结尾的空格删除。要保留这些空格,可以用矩阵合并符“[]”来实现字符串合并,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_4.jpg?sign=1739338426-jJgz9wvX4lNEihvCbwEtKWd6uWxZ8fT1-0-2f355061812862fe82f64a305e2be0ea)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_5.jpg?sign=1739338426-5kTSN0QDAnoh02uVaEkI21Zi6C1KMxIH-0-c27be829252df7897a311bffa190f140)
用户也可以创建二维字符数组,但要注意保证二维字符数组的每行具有相同的长度。如下所示的字符串是合法的,因为它的每行都有6个字符:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_6.jpg?sign=1739338426-JrgcBv6fPSUOzfZJTaniceMVrCuw9Dwy-0-f8600ac5fa422a8f1eb0198b1d21b64b)
上述语句的输出结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_7.jpg?sign=1739338426-JajYCsLVNJ9NwDUitONM5XAdjQjkHuVe-0-97832eb188512fbc3f5b6850b0d1b158)
当创建的多个字符串具有不同的长度时,可以在字符串的尾部添加空格来强制实现字符串具有相同的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_8.jpg?sign=1739338426-1Ul6da0X74SKZUmIcBWB0QCSVp1KCRlH-0-c80e6b6ffb90b69caaac6931455d6e40)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_9.jpg?sign=1739338426-7UrDr2nGyrvcPsUFv0YYCw2P4vbdUjmO-0-610b68890225b595bbb0cd61a2a371be)
更简单的方法是利用char()函数来创建字符串。使用char()函数创建字符串数组时,如果字符串不具有相同的长度,则char()函数自动用空格把字符串补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_10.jpg?sign=1739338426-UBhODsSM9somEJ3MTPNwFDWuJYZoHtF5-0-39a9b1abc2fe8d048c1512e7797d111d)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_11.jpg?sign=1739338426-3i4lxmg0fO8auj4puIxva25wW0VGaWH2-0-0f1d130148bf8ac2453078c096422ea8)
strvcat()函数与char()函数具有类似的功能。strvcat()函数把多个字符串合并为一个字符串数组。当字符串不具有相同的长度时,strvcat()函数自动在尾部添加空格补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_12.jpg?sign=1739338426-uKbljMoEah77yMkWLI5Rg24PD22nn8S3-0-c5a50e76ebc8ac81d36a9036dd6d7768)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_13.jpg?sign=1739338426-HGWnCdfmiEG2oBAEhGEf61IxPnUUv64v-0-515633b640a94e9a9176a16798d906e8)
把上述字符数组转换成字符串单元数组的代码如下所示:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_14.jpg?sign=1739338426-ZNDHoZsi5llLfbwklgBHI8DeZWTktDeU-0-1f7469bb5bf12a6169664a48c2636d21)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_15.jpg?sign=1739338426-7MF1qkmFz25Ddgs7gfKyD3oaha9lSTmt-0-3df6f95e4c372900ab38408df05a0f04)
注 意
cellstr()函数可以把字符串尾部的空格删除。可以查看celldata的第1个字符串长度,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_16.jpg?sign=1739338426-vsJgpRtjzro8WBQkFh0L5GPgvl2kKZPQ-0-52c263fa30b67719901fe9f9a6e01dc5)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_17.jpg?sign=1739338426-UH5DycawWpVd7JkwcwAAW64sKkROz45Z-0-78c2740d185839442c56e790d35b4796)
可以使用char()函数把一个字符串单元数组转换成一个字符数组,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_18.jpg?sign=1739338426-KzM5vzT6ZoylkcdZU5QxkFNl6Sx1A3nc-0-a265af9e328c6dd99927f76c3f6d82f3)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_19.jpg?sign=1739338426-dpo2bH85A96b9KxJUqiLj4LrW0ri99HQ-0-c4aaad49bd90002232d6426d0d8d1e76)
使用如下所示的代码可以得到其第1个字符串的长度:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_20.jpg?sign=1739338426-WjWKcMSsOqhhwcK8p0Vc5oa2Oths4LQq-0-053af3b4ebceb29307680745092b1ebf)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_21.jpg?sign=1739338426-EHtVfCyTfED1U7wa5r8oT8RJv0xXmulM-0-efc0c694817de4cafcb6b36a2e5cbb77)
7.1.2 创建二维字符数组
在 MATLAB 中还可以创建二维字符数组,但一个数组中每行的长度都必须相等。如果其中的一行比其他行短,那么这个字符数据将无效,并产生一个错误。例如,如下所示的语句是非法的,因为两行的长度不同:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_22.jpg?sign=1739338426-1W5PSsvXtn79yb4umwsWSuF1JwBg7YQD-0-5848d39ca6af1dfb04ba25ff49028027)
创建二维字符数组最简单的方法是使用 char()函数,使用该函数可以自动寻找所有字符串中最长的那一个。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_23.jpg?sign=1739338426-T1RYvzZIAZhYF1ccWB6JVDNEZfBkpp21-0-a47481831f607e3ef2075633d15eab09)
可以使用deblank()函数删除多余的空格。例如,如下所示的语句用于删除name数组中第2行多余的空格,并将运行结果与原来的进行比较:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_24.jpg?sign=1739338426-LGyAuK2XAsQHU5bVp2xgGFTIw1ZDqwtz-0-5fb190c0916e4a1f55d9c9975ea60835)
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_25.jpg?sign=1739338426-zum31dpFHl97hYGL0Xp3W8RLpQIVqFVn-0-5a309a98bc5a8adb5e6d99e55d44dc44)