Matlab中创建字符串数组
⽬录
创建字符串数组
R2016b 中引⼊了字符串数组。字符串数组可存储⽂本⽚段,并提供⼀组⽤于将⽂本按数据进⾏处理的函数。可以对字符串数组进⾏索引、重构和进⾏串联,就像处理任何其他类型的数组⼀样。此外,还可以访问字符串中的字符,并使⽤ plus 运算符向字符串追加⽂本。要重新排列字符串数组中的字符串,请使⽤ split、join 和 sort 等函数。
根据变量创建字符串数组
MATLAB® 提供字符串数组来存储⽂本⽚段。字符串数组的每个元素都包含⼀个 1×n 字符序列。从 R2017a 开始,可以使⽤双引号创建字符串。
str = "Hello, world"
str =
"Hello, world"
作为备选⽅法,可以使⽤ string 函数将字符向量转换为字符串。chr 为⼀个 1×17 字符向量。str 为⼀个与该字符向量具有相同⽂本的 1×1 字符串。
hr = 'Greetings, friend'
chr =
'Greetings, friend'
str = string(chr)
str =
"Greetings, friend"
使⽤ [] 运算符创建⼀个包含多个字符串的字符串数组。str 是⼀个 2×3 字符串数组,其中包含六个字符串。
str = ["Mercury","Gemini","Apollo";
"Skylab","Skylab B","ISS"]
str = 2x3 string array
"Mercury"    "Gemini"      "Apollo"
"Skylab"    "Skylab B"    "ISS"
通过 strlength 函数计算 str 中的每个字符串的长度。使⽤ strlength ⽽⾮ length 来确定字符串中的字符数量。
L = strlength(str)
L = 2×3
7    6    6
6    8    3
作为备选⽅法,可以使⽤ string 函数将字符向量元胞数组转换为字符串数组。MATLAB 使⽤双引号显⽰字符串数组中的字符串,使⽤单引号显⽰元胞数组中的字符向量。
C = {'Mercury','Venus','Earth'}
C = 1x3 cell array
{'Mercury'}    {'Venus'}    {'Earth'}
数组转换成字符串
str = string(C)
str = 1x3 string array
"Mercury"    "Venus"    "Earth"
除了字符向量,还可以使⽤ string 函数将数值、⽇期时间、持续时间和分类值转换为字符串。将数值数组转换为字符串数组。
X = [5 10 20 3.1416];
string(X)
ans = 1x4 string array
"5"    "10"    "20"    "3.1416"
将⽇期时间值转换为字符串。
d = datetime('now');
string(d)
ans =
"30-Jul-2019 17:12:01"
此外,也可以使⽤ readtable、textread、textscan 和 fscanf 函数将⽂件中的⽂本读⼊字符串数组。
创建空字符串和缺失字符串
字符串数组可以包含空值和缺失值。空字符串不包含字符。当显⽰空字符串时,结果为⼀对其间不包含任何内容的双引号 ("")。缺失字符串相当于数值数组的 NaN。它指⽰字符串数组包含缺失值的位置。当显⽰缺失字符串时,结果为 <missing>,且不带任何引号。
使⽤ strings 函数创建⼀个空字符串数组。在不带任何参数的情况下调⽤ strings 时,将会返回⼀个空字符串。请注意,str 的⼤⼩是1×1,⽽不是 0×0。但是,str 不包含字符。
str = strings
str =
""
使⽤单引号创建⼀个空字符向量。请注意,chr 的⼤⼩是 0×0。
chr = ''
chr =
0x0 empty char array
创建⼀个所有元素都是空字符串的字符串数组。
str = strings(2,3)
str = 2x3 string array
""    ""    ""
""    ""    ""
可以使⽤ strings 函数预分配⼀个字符串数组。
要创建缺失字符串,请使⽤ string 函数转换缺失值。缺失字符串显⽰为 <missing>。
str = string(missing)
str =
<missing>
可以创建同时包含空字符串和缺失字符串的字符串数组。使⽤ ismissing 函数确定哪些元素为包含缺失值的字符串。请注意,空字符串不是缺失字符串。
str(1) = "";
str(2) = "Gemini";
str(3) = string(missing)
str = 1x3 string array
""    "Gemini"    <missing>
ismissing(str)
ans = 1x3 logical array
0  0  1
将⼀个缺失字符串与另⼀个字符串进⾏⽐较。结果始终为 0 (false),即使将⼀个缺失字符串与另⼀个缺失字符串进⾏⽐较也是如此。
str = string(missing);
str == "Gemini"
ans = logical
str == string(missing)
ans = logical
访问字符串数组的元素
字符串数组⽀持数组运算,例如进⾏索引和重构。使⽤数组索引访问 str 的第⼀⾏以及所有列。
str = ["Mercury","Gemini","Apollo";
"Skylab","Skylab B","ISS"];
str(1,:)
ans = 1x3 string array
"Mercury"    "Gemini"    "Apollo"
访问 str 的第⼆⾏中的第⼆个元素。
str(2,2)
ans =
"Skylab B"
在 str 的边界之外分配⼀个新字符串。MATLAB 将扩展该数组并使⽤缺失值填充未分配的元素。
str(3,4) = "Mir"
str = 3x4 string array
"Mercury"    "Gemini"      "Apollo"    <missing>
"Skylab"    "Skylab B"    "ISS"        <missing>
<missing>    <missing>    <missing>    "Mir"
访问字符串中的字符
可以使⽤花括号 {}对字符串数组进⾏索引以直接访问字符。当需要访问和修改字符串元素中的字符时,请使⽤花括号。通过花括号进⾏索引为可处理字符串数组或字符向量元胞数组的代码提供了兼容性。但是只要有可能,请尽量使⽤字符串函数来处理字符串中的字符。使⽤花括号访问第⼆⾏中的第⼆个元素。chr 是⼀个字符向量,⽽不是字符串。
str = ["Mercury","Gemini","Apollo";
"Skylab","Skylab B","ISS"];
chr = str{2,2}
chr =
'Skylab B'
访问该字符向量并返回前三个字符。
str{2,2}(1:3)
ans =
'Sky'
查字符串中的空格字符,并将这些字符替换为短划线。使⽤ isspace 函数检查字符串中的单个字符。isspace 会返回⼀个逻辑向量,只要存在⼀个空格字符,该向量即包含⼀个 true 值。最后,显⽰修改后的字符串元素 str(2,2)。
TF = isspace(str{2,2})
TF = 1x8 logical array
0  0  0  0  0  0  1  0
str{2,2}(TF) = "-";
str(2,2)
ans =
"Skylab-B"
请注意,在该⽰例中,也可以使⽤ replace 函数来替换空格,⽽⽆需借助于花括号索引。
replace(str(2,2)," ","-")
ans =
"Skylab-B"
将字符串串联到字符串数组中
将字符串串联到字符串数组中,就像您串联任何其他类型的数组⼀样。使⽤⽅括号 []串联两个字符串数组。
str1 = ["Mercury","Gemini","Apollo"];
str2 = ["Skylab","Skylab B","ISS"];
str = [str1 str2]
str = 1x6 string array
"Mercury"    "Gemini"    "Apollo"    "Skylab"    "Skylab B"    "ISS"
转置 str1 和 str2。将它们进⾏串联,然后将列标题垂直串联到字符串数组上。当将字符向量串联到字符串数组中时,字符向量会⾃动转换为字符串。
str1 = str1';
str2 = str2';
str = [str1 str2];
str = [["Mission:","Station:"] ; str]
str = 4x2 string array
"Mission:"    "Station:"
"Mercury"    "Skylab"
"Gemini"      "Skylab B"
"Apollo"      "ISS"
向字符串追加⽂本
要向字符串追加⽂本,请使⽤ plus 运算符 +。plus 运算符可向字符串追加⽂本,但不会更改字符串数组的⼤⼩。在名字数组中追加⼀个姓⽒。如果将某个字符向量追加到字符串,则该字符向量将⾃动转换为字符串。
names = ["Mary";"John";"Elizabeth";"Paul";"Ann"];
names = names + ' Smith'
names = 5x1 string array
"Mary Smith"
"John Smith"
"Elizabeth Smith"
"Paul Smith"
"Ann Smith"
追加不同的姓⽒。可以将⽂本从⼀个字符串数组或字符向量元胞数组追加到另⼀个字符串数组。当添加⾮标量数组时,这些数组的⼤⼩必须相同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。