Main Content

string

字符串数组

说明

您可以使用字符串数组表示 MATLAB® 中的文本。字符串数组的每个元素存储一个字符序列。序列可以具有不同长度,无需填充,例如 "yes""no"。只有一个元素的字符串数组也称为字符串标量

您可以按照标准数组运算对字符串数组进行索引、重构和串联,还可以使用 + 运算符向它们追加文本。如果字符串数组表示数字,则可以使用 double 函数将其转换为数值数组。

创建对象

可以用双引号将一段文本括起来,由此创建一个字符串标量。

str = "Hello, world"
str = 
"Hello, world"

要创建一个字符串数组,您可以使用方括号来串联字符串标量,就像将数字串联成数值数组一样。

str = ["Mercury" "Gemini" "Apollo";
       "Skylab" "Skylab B" "ISS"]
str = 2x3 string
    "Mercury"    "Gemini"      "Apollo"
    "Skylab"     "Skylab B"    "ISS" 

也可以按如下所述,使用 string 函数将不同数据类型的变量转换成字符串数组。

描述

示例

str = string(A) 将输入数组转换为字符串数组。例如,如果 A 是数值向量 [1 20 300],则 str 是相同大小的字符串数组 ["1" "20" "300"]

示例

str = string(A, dateFmt)(其中 Adatetimeduration 数组)应用指定的格式,如 "HH:mm:ss"。此外,您可以将区域设置指定为单独的输入,例如 "en_US"

输入参量

全部展开

输入数组。A 的数据类型决定 string 如何将 A 转换为字符串数组。

输入类型

转换说明

示例输入

示例输出

char

每行都变为一个字符串标量

如果 A 为空,即 '',则输出为 "",即不包含字符的字符串标量

1×3 char array
    'foo'

1×1 string array
    "foo"
2×3 char array
    'foo'
    'bar'
2×1 string array
    "foo"
    "bar"

元胞数组

元胞数组的每个元素都必须可转换为 1×1 字符串。

{137,'foo'}

["137" "foo"]

分类数组

输出字符串是对应于 A 的每个元素的类别名称。

1x3 categorical array
    red    green    blue
1x3 string array
    "red"    "green"    "blue"

数值数组

输出格式和精度等效于使用 num2str。使用 compose 指定更精确的格式。

如果 A 为空,即 [],则输出为 0×0 空字符串数组。

使用 char 转换为 ASCII 或 Unicode 点。

[137 3.1e-3 8.5e-6]

["137" "0.0031" "8.5e-06"]

datetime 数组

要指定格式和区域设置,请参阅 dateFmt

datetime(2020,6,1)

"01-Jun-2020"

逻辑数组

logical 函数不接受字符串输入,因此转换是单向的。

logical([0 1])

["false" "true"]

转换的缺失值,如 NaNNaT<undefined> 分类值,显示为 <missing>

日期格式和区域设置,指定为单独字符向量或字符串标量。A 输入必须是 datetimedurationcalendarDuration 类型。

如果不指定格式,string 将使用 AFormat 属性中的值。要仅指定区域设置,请使用空数组作为格式的占位符,即 []

示例: string(A, "yyyy-MM-dd")

示例: string(A, "yyyy-MM-dd","en_US")

示例: string(A, [],"en_US")

支持的格式取决于 A 的数据类型。

  • datetime 格式可以包括单位和分隔符的组合,例如 "yyyy-MMM-dd HH:mm:ss.SSS"。有关详细信息,请参阅 datetime 数组的 Format 属性。

  • duration 格式为单个字符(ydhms)或者以下组合之一:

    • "dd:hh:mm:ss"

    • "hh:mm:ss"

    • "mm:ss"

    • "hh:mm"

    • 以上任意项,用最多九个 S 字符指示秒小数位,例如 "hh:mm:ss.SSSS"

  • calendarDuration 格式可以按从最大到最小时间单位的顺序包括字符 yqmwdt 的组合,例如 "ym"。有关 durationcalendarDuration 格式的详细信息,请参阅设置日期时间显示格式

区域设置影响用于表示日期和时间的某些分量(例如月份名称)的语言。有效值包括:

  • "system",用于指定您的系统区域设置。

  • xx_YY 形式的字符向量,其中 xx 是用于指定语言的小写 ISO 639-1 双字母代码,YY 是用于指定国家/地区的大写 ISO 3166-1 alpha-2 代码。有关示例值,请参阅 datetime 函数的 Locale 名称-值参量。

输出参量

全部展开

输出数组,以字符串数组形式返回。

MATLAB 采用 UTF-16 编码方式将所有字符存储为 Unicode® 字符。有关 Unicode 的详细信息,请参阅 Unicode

示例

全部折叠

要查找字符串中的唯一单词,请在空格字符处拆分字符串,然后调用 unique 函数。

首先创建一个字符串标量。

str = "A horse! A horse! My kingdom for a horse!"
str = 
"A horse! A horse! My kingdom for a horse!"

删除感叹号。

str = erase(str,"!")
str = 
"A horse A horse My kingdom for a horse"

str 中的所有字母转换为小写字符。

str = lower(str)
str = 
"a horse a horse my kingdom for a horse"

使用 split 函数在空格字符处拆分 strsplit 将丢弃空格字符,并以字符串数组形式返回结果。

str = split(str)
str = 9x1 string
    "a"
    "horse"
    "a"
    "horse"
    "my"
    "kingdom"
    "for"
    "a"
    "horse"

使用 unique 函数查找 str 中的唯一单词。

str = unique(str)
str = 5x1 string
    "a"
    "for"
    "horse"
    "kingdom"
    "my"

A = 'Four score and seven years ago'
A = 
'Four score and seven years ago'
str = string(A)
str = 
"Four score and seven years ago"

str 包含与 A 相同的字符。但是,A 是字符向量,而 str 是字符串标量。

c = size(A)
c = 1×2

     1    30

s = size(str)
s = 1×2

     1     1

要返回 str 中的字符数,请使用 strlength 函数。

n = strlength(str)
n = 30

将字符向量元胞数组转换为字符串数组。

A = {'Mercury','Gemini','Apollo';...
     'Skylab','Skylab B','ISS'}
A = 2x3 cell
    {'Mercury'}    {'Gemini'  }    {'Apollo'}
    {'Skylab' }    {'Skylab B'}    {'ISS'   }

str = string(A)
str = 2x3 string
    "Mercury"    "Gemini"      "Apollo"
    "Skylab"     "Skylab B"    "ISS"   

要访问 str 的第一行中的第二个元素,请使用圆括号进行索引。您可以通过矩阵索引访问字符串数组中的字符串,就像访问数值数组的元素一样。

str(1,2)
ans = 
"Gemini"

访问第三列。

str(:,3)
ans = 2x1 string
    "Apollo"
    "ISS"

A = [77 65 84 76 65 66]
A = 1×6

    77    65    84    76    65    66

str = string(A)
str = 1x6 string
    "77"    "65"    "84"    "76"    "65"    "66"

str 是字符串数组,其中每个元素表示 A 中的一个数值。请注意,string 不会像 char 函数那样将数字视为 ASCII 或 Unicode® 值。

创建一个字符串数组,其中每个元素代表一个数字。要将字符串数组转换为数值数组,请使用 double 函数。

str = ["256","3.1416","8.9e-3"]
str = 1x3 string
    "256"    "3.1416"    "8.9e-3"

X = double(str)
X = 1×3

  256.0000    3.1416    0.0089

当输入参量为字符串数组时,double 函数会将每个元素视为一个浮点值的表示形式。但是,当输入是字符数组时,double 会将每个字符转换为表示其 Unicode® 值的数字。

也可以使用 str2double 函数。当输入参量可能是字符串数组、字符向量或字符向量元胞数组时,适合使用 str2double

Y = str2double(str)
Y = 1×3

  256.0000    3.1416    0.0089

C = '2.7183';
Z = str2double(C)
Z = 2.7183

从持续时间数组转换为字符串。有关将常见数据类型转换为字符串的详细信息,请参阅Convert Between Text and datetime or duration Values

创建一个 duration 数组。

D = hours(23:25) + minutes(8) + seconds(1.2345)
D = 1x3 duration
   23.134 hr   24.134 hr   25.134 hr

D 转换为字符串数组。

str = string(D)
str = 1x3 string
    "23.134 hr"    "24.134 hr"    "25.134 hr"

str 是每个元素对应一个持续时间值的字符串数组。str 的大小与 D 相同。

指定 str 中的持续时间值的格式。

str = string(D,'hh:mm')
str = 1x3 string
    "23:08"    "24:08"    "25:08"

提示

  • 有关在字符串数组中创建和处理文本的函数列表,请参阅字符和字符串

  • 如果输入参量是对象,则它必须属于实现 string 方法来将对象表示为字符串的类。

  • char 数组转换为数值类型将生成包含对应 Unicode 代码值的数组。字符串中的文本不以这种方式转换。将不表示单个数值的字符串转换为 double 将产生 NaN 结果。有关详细信息,请参阅 Unicode 和 ASCII 值

扩展功能

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2016b 中推出