Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

字符串数组和字符数组中的文本

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
    "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 函数也接受字符向量和字符向量元胞数组。

另请参阅

| | | | | |

相关主题