matlab字符串

字符串是用单引号括起来的字符序列
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示
在MATLAB中,下标索引都是从1开始

操作函数:
函数大全

创建字符串

双引号直接创建

a="hello"

还可以用string函数把字符向量转换成字符串

chr='hello'
str=string(chr)

使用 [] 运算符创建一个包含多个字符串的字符串数组。str 是一个 2×3 字符串数组,其中包含六个字符串

str = ["Mercury","Gemini","Apollo";
       "Skylab","Skylab B","ISS"]

通过 strlength 函数计算 str 中的每个字符串的长度。使用 strlength 而非 length 来确定字符串中的字符数量。

L = strlength(str)

作为备选方法,您可以使用 string 函数将字符向量元胞数组转换为字符串数组。MATLAB 使用双引号显示字符串数组中的字符串,使用单引号显示元胞数组中的字符向量。

C = {'Mercury','Venus','Earth'}
str = string(C)

除了字符向量,您还可以使用 string 函数将数值、日期时间、持续时间和分类值转换为字符串。

将数值数组转换为字符串数组。

X = [5 10 20 3.1416];
string(X)

将日期时间值转换为字符串。
创建空字符串和缺失字符串

字符串数组可以包含空值和缺失值。空字符串不包含字符。当您显示空字符串时,结果为一对其间不包含任何内容的双引号 ("")。缺失字符串相当于数值数组的 NaN。它指示字符串数组包含缺失值的位置。当您显示缺失字符串时,结果为 ,且不带任何引号。

使用 strings 函数创建一个空字符串数组。在不带任何参数的情况下调用 strings 时,将会返回一个空字符串。请注意,str 的大小是 1×1,而不是 0×0。但是,str 不包含字符。

str = strings

str =
“”

使用单引号创建一个空字符向量。请注意,chr 的大小是 0×0。

chr = ''

chr =

0x0 empty char array

创建一个所有元素都是空字符串的字符串数组。您可以使用 strings 函数预分配一个字符串数组。

str = strings(2,3)

str = 2x3 string array
“” “” “”
“” “” “”

要创建缺失字符串,请使用 string 函数转换缺失值。缺失字符串显示为 。

str = string(missing)

str =

您可以创建同时包含空字符串和缺失字符串的字符串数组。使用 ismissing 函数确定哪些元素为包含缺失值的字符串。请注意,空字符串不是缺失字符串。

str(1) = "";
str(2) = "Gemini";
str(3) = string(missing)

str = 1x3 string array
“” “Gemini”

ismissing(str)

ans = 1x3 logical array

0 0 1

将一个缺失字符串与另一个字符串进行比较。结果始终为 0 (false),即使您将一个缺失字符串与另一个缺失字符串进行比较也是如此。

str = string(missing);
str == "Gemini"

ans = logical
0

str == string(missing)

ans = logical
0

访问字符串数组的元素

字符串数组支持数组运算,例如进行索引和重构。使用数组索引访问 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”
“Skylab” “Skylab B” “ISS”
“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”

追加不同的姓氏。您可以将文本从一个字符串数组或字符向量元胞数组追加到另一个字符串数组。当您添加非标量数组时,这些数组的大小必须相同。

names = ["Mary";"John";"Elizabeth";"Paul";"Ann"];
lastnames = ["Jones";"Adams";"Young";"Burns";"Spencer"];
names = names + " " + lastnames

names = 5x1 string array
“Mary Jones”
“John Adams”
“Elizabeth Young”
“Paul Burns”
“Ann Spencer”

追加缺失字符串。当您使用加号运算符追加缺失字符串时,输出为一个缺失字符串。

str1 = "Jones";
str2 = string(missing);
str1 + str2

ans =

拆分、联接和排序字符串数组

MATLAB 提供了一组丰富的函数来处理字符串数组。例如,您可以使用 split、join 和 sort 函数重新排列字符串数组 names,以使名字按姓氏的字母顺序排列。

按空格字符拆分 names。拆分会将 names 从 5×1 字符串数组更改为 5×2 数组。

names = ["Mary Jones";"John Adams";"Elizabeth Young";"Paul Burns";"Ann Spencer"];
names = split(names)

names = 5x2 string array
“Mary” “Jones”
“John” “Adams”
“Elizabeth” “Young”
“Paul” “Burns”
“Ann” “Spencer”

将 names 的列交换位置,使姓在第一列。在每个姓后面添加一个逗号。

names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','

names = 5x2 string array
“Jones,” “Mary”
“Adams,” “John”
“Young,” “Elizabeth”
“Burns,” “Paul”
“Spencer,” “Ann”

将姓和名联接起来。join 函数在它联接的字符串之间放置一个空格字符。进行联接之后,names 为一个 5×1 字符串数组。

names = join(names)

names = 5x1 string array
“Jones, Mary”
“Adams, John”
“Young, Elizabeth”
“Burns, Paul”
“Spencer, Ann”

对 names 的元素进行排序,使它们按字母顺序排列。

names = sort(names)

names = 5x1 string array
“Adams, John”
“Burns, Paul”
“Jones, Mary”
“Spencer, Ann”
“Young, Elizabeth”

参考

你可能感兴趣的:(MATLAB)