MATLAB基础2-2-数据结构3

字符串与字符向量

字符串为string类型
字符向量(字符数组)

I.字符串

string类型
字符串中的字符不能被索引,因为一个字符串string类型的为常量
但是可以对字符串数组进行索引
创建,利用双引号进行创建

str="hello world"

两个双引号表示句中双引号

1.strlength 字符串长度

L=strlength(str) str输入可以是字符串数组

2.字符串串联

f = 71;
c = (f-32)/1.8;
tempText = "Temperature is " + c + "C" 直接使用加号串联

注意这里数字被转换为了字符串(字符),字符串运算的时候自动转换为字符串

join

或者使用a.join(b) a,b为字符串,拼接成一个字符串

%当str为字符串数组和字符向量元胞数组,按行串联字符串(元素),然后两个元素之间加入空格
%注意默认情况下是按行串联成一个字符串或元胞数组
newStr = join(str)
newStr = join(str,dim) 指定将字符串数组和字符向量元胞数组,按列串联拼接

newStr = join(str,delimiter)
串联的时候,不是加入默认时的空格,而是以delimiterzi元素进行串联
append 待补充

3.字符串类型转换

string 转换为字符串
str = string(A) 
%将输入数组转换为字符串数组
%A可以是字符向量,将字符向量转换为字符串(标量)
%A是元胞数组,则 string 将 A 中的每个元素转换为 str 中的字符串元素
% A 是数值数组,则 string 将每个数值转换为 str 中的字符串元素,表示可以将数组转换为文本;注意与char函数的区别。这里可以使用double等数值类型的转换函数将字符串转换为数值.尽量不用double类型转换函数转换字符向量,应该利用str2double
% A 是逻辑数组,则 string 将每个值转换为 "false""true"

4.子字符串替换

isspace 替换字符串中空格

查找字符串中的空格字符,并将这些字符替换为短划线

TF = isspace(str{2,2}) %返回的是逻辑数组
str{2,2}(TF) = "-"; %将空格字符替换为短线-
replace 查找并替换一个或多个子字符串
newStr = replace(str,old,new) 将所有出现的子字符串 old 替换为 new

如果 old 包含多个子字符串(就是有多个字符串需要被替换),则 new 必须与 old 具有相同的大小,或者必须为单个子字符串

old可以是字符串向量

5.字符串与字符向量运算

字符串与字符向量运算,自动将字符向量转换为字符串

names = ["Mary";"John";"Elizabeth";"Paul";"Ann"];
names = names + ' Smith' %结果是    "Mary Smith""John Smith"...

II.字符向量

这里的字符向量可以称为字符数组
char类型的向量
字符向量(数组)可以对单一字符数组向量进行元素(字符索引)
创建,利用单引号进行创建

chr = 'Hello, world' %相当于数组

1.strlength 字符向量长度

输入可以是字符串和字符向量

2.length 最大数组维度长度

因为一个字符向量也是一个数组,所以可以利用length计算字符向量的长度,即一个字符向量有多少个char元素

3.字符向量串联

直接利用[]进行串联

seq2 = [seq 'ATTAGAAACC']

不同于字符串串联,字符串串联可以是直接利用+号进行串联

使用,逗号时
seq2 = [seq ,'ATTAGAAACC']等价于不使用逗号seq2 = [seq 'ATTAGAAACC']

要想创建字符向量矩阵

使用;分号时
seq2 = [seq ;'ATTAGAAACC']

但是这里注意,利用分号创建字符向量矩阵每行的向量大小必须一致,否则创建失败['123';'3dd333'](这是错误的)

append 待补充

还可以利用append函数进行串联

4.字符向量类型转换

str2double 待补充

5.空字符向量

char='' 

不同于空字符串,此时字符向量大小为0·0

5.子字符向量替换

isspace 替换字符向量中空格

isspace也可以用于字符向量,其实本质上就是作用于字符向量,返回逻辑数组

replace

replace也可以对字符向量进行操作

III-IV.字符串数组与字符向量元胞数组

III.字符串数组

1.字符串数组

str = ["Amis","Chekhov","Joyce";"Stein","","Proust"]

相当于矩阵的创建,利用[]符号
注意当作用于字符向量的时候,利用[]只能进行串联形成单个字符向量,而不能组成数组(矩阵)
注意字符串数组间的串联利用的可以利用join函数

还可以这样创建(这样创建居然不是结构体!)

str(1) = "";
str(2) = "Gemini";
str(3) = string(missing)
readtable
textfscan
strings 空字符串数组

也可以创建空字符串

str = strings 返回不包含任何元素的空字符串,大小为1·1
str = strings(n) 返回n·n的空字符串数组
str = strings(sz1,...,szN) 指定维度大小

2.访问字符串数组

str(2,3)直接利用括号()进行索引,返回的是字符串
str{2,3}(1:3)使用花括号{}计算索引,返回的是字符向量,然后即可访问该字符向量中的某些字符

3.字符串数组串联

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

字符串数组串联,利用[]返回的是字符串数组,(不会拼接成一个字符串)
不同于字符串的串联,字符串的串联利用+号,返回的是一个字符串
(注意,对于字符向量,利用[]会拼接成一个字符向量)

4.字符串数组运算\相加

字符串数组相加,相当与对应元素拼接

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

5.字符串数组拆分\合并

split 拆分

字符串数组的拆分也可用于字符串

newStr = split(str)
在空白字符处进行拆分

newStr = split(str,delimiter)
指定拆分的字符

注意,如果 str 是字符串数组或字符向量元胞数组,并且有多个元素,则每个元素必须可分成相同数量的子字符串。
否则要利用循环for逐个元素进行差分

还可对不同的分割符进行多处分割

注意:如果 split 在拆分时遇到重复的分隔符,它会返回空字符串作为输出数组中的对应元素

对于单个字符串还可以使用a.split(",")这样的分割方法

join 合并

见上述的字符串串联,本质上可以应用于字符串数组

IV.字符向量元胞数组

1.字符向量矩阵

字符向量矩阵

使用;分号时
seq2 = [seq ;'ATTAGAAACC']

但是这里注意,利用分号创建字符向量矩阵每行的向量大小必须一致,否则创建失败['123';'3dd333'](这是错误的)
否则就要使用元胞数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值