目录
字符串数组和字符数组中的文本
MATLAB® 中有两种表示文本的方式。从 R2016b 开始,可以将文本存储在字符串数组中。在任何版本的 MATLAB 中,都可以将文本存储在字符数组中。字符数组的一个典型用途是将文本片段存储为字符向量。MATLAB 用双引号显示字符串,用单引号显示字符向量。
用字符串数组表示文本
可以使用 string 数据类型将任何 1×n
字符序列存储为字符串。从 R2017a 开始,可以用双引号将文本括起来以创建字符串。
str = "Hello, world"
str =
"Hello, world"
虽然文本 "Hello, world"
的长度为 12 个字符,但 str
本身是 1×1 字符串或字符串标量。可以使用字符串标量来指定文件名、图标签或任何其他文本信息片段。要计算字符串中的字符数量,请使用strlength
函数。
n = strlength(str)
n = 12
如果文本包含双引号,请在定义中使用两个双引号。
str = "They said, ""Welcome!"" and waved."
str =
"They said, "Welcome!" and waved."
要将文本添加到字符串的末尾,请使用加号运算符 +
。如果变量可以转换为字符串,则 plus
会转换并追加它。
fahrenheit = 71;
celsius = (fahrenheit-32)/1.8;
tempText = "temperature is " + celsius + "C"
tempText =
"temperature is 21.6667C"
从 R2019a 开始,还可以使用 append
函数串联文本。
tempText2 = append("Today's ",tempText)
tempText2 =
"Today's temperature is 21.6667C"
string
函数可以转换不同类型的输入,如数值、日期时间、持续时间和分类值。例如,将 pi
的输出转换为字符串。
ps = string(pi)
ps =
"3.1416"
可以将多个文本片段存储在字符串数组中。数组的每个元素都可以包含一个具有不同字符数的字符串,而无需填充。
str = ["Mercury","Gemini","Apollo";...
"Skylab","Skylab B","ISS"]
str = 2x3 string array
"Mercury" "Gemini" "Apollo"
"Skylab" "Skylab B" "ISS"
str
是一个 2×3 的字符串数组。可以使用 strlength
函数计算字符串的长度。
N = strlength(str)
N = 2×3
7 6 6
6 8 3
从 R2018b 开始,MATLAB 和 MathWorks® 全线产品都支持字符串数组。接受字符数组(和字符向量元胞数组)作为输入的函数也接受字符串数组。
用字符向量表示文本
要使用 char
数据类型将 1×n
字符序列存储为字符向量,请用单引号将它引起来。
chr = 'Hello, world'
chr =
'Hello, world'
文本 'Hello, world'
的长度为 12 个字符,chr
将其存储为 1×12 字符向量。
whos chr
Name Size Bytes Class Attributes
chr 1x12 24 char
如果文本包含单引号,请在定义中使用双重单引号。
chr = 'They said, ''Welcome!'' and waved.'
chr =
'They said, 'Welcome!' and waved.'
字符向量有两个主要用途:
-
指定单个文本片段,如文件名和图标签。
-
表示使用字符进行编码的数据。在这种情况下,可能需要尽可能方便地访问单个字符。
例如,可以将 DNA 序列存储为一个字符向量。
seq = 'GCTAGAATCC';
可以通过索引来访问单个字符或字符子集,就像对数值数组进行索引一样。
seq(4:6)
ans =
'AGA'
用方括号串联字符向量,就像串联其他类型的数组一样。
seq2 = [seq 'ATTAGAAACC']
seq2 =
'GCTAGAATCCATTAGAAACC'
从 R2019a 开始,还可以使用 append
串联文本。推荐使用 append
函数,因为它以一致的方式处理字符串数组、字符向量和字符向量元胞数组。
seq2 = append(seq,'ATTAGAAACC')
seq2 =
'GCTAGAATCCATTAGAAACC'
接受字符串数组作为输入的 MATLAB 函数也接受字符向量和字符向量元胞数组。