Matlab 中的字符(char)和字符串(string)

Posted RainaRaina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 中的字符(char)和字符串(string)相关的知识,希望对你有一定的参考价值。

目录

一、数据类型定义:向量(char)vs 变量(string)

二、不同之处

1. 字符和字符串的串联:[ ] 或 strcat( ) 

 2. 多行数组:用分号(;)或换行完成

 3. 字符串中输入单引号

4. 重复出现的元素

三、相关函数

创建

比较

查找替换

引用


一、数据类型定义:向量(char)vs 变量(string)

Matlab 中可以通过一对单引号或一对双引号来创建字符(char)或字符串(string)。

 字符变量(char)可以被当做一个由字符组成的一维向量,字符串(string)则是一个变量。利用 char() 和 string() 函数可以对字符串和字符变量相互转换。[1]

二、不同之处

在很多情况下两者可以互换,下面主要关注两者应用的不同之处。

1. 字符和字符串的串联:[ ] 或 strcat( ) 

可以直接用左右方括号([])对字符(char)进行串联,对字符串(string)的串联则需要用到函数 strcat( ) 。因为字符串是一个变量,用方括号串联只能得到m x n 字符串数组或向量。

 

 2. 多行数组:用分号(;)或换行完成

需要注意:直接生成字符(串)数组时,char 数组每一行的个数必须相同,string 数组则不需要。(为什么说 “直接生成”,因为在使用函数 str2mat 创建字符(串)数组的时候,不用担心每一行的字符个数是否相等,函数在运行中会以字符最多的一行为准,而将其他行中的字符以空格补齐。可见本节第 4 点示例中的对比。)[2]

 3. 字符串中输入单引号

两个单引号相当于一个单引号,但只能用' ''right'' '(char),不能用 " ''wrong'' "(string)

4. 重复出现的元素

实际工作中经常遇到一系列字符串有重复出现的固定片段,这时就可以用 repmat() 函数来简化表达。下面给出几个例子:

补充:前两个例子不用 repmat() 函数所得结果相同。即也可以写成:

strcat("N",string([1:11]'))
strcat("N",num2str([1:11]'))

 

三、相关函数

字符串相关函数简表

创建

strcat字符串组合
strvcat竖直方向字符串组合
repmat重复

比较

strcmp判断两个字符串是否相等。
strncmp判断两个字符串的前n个字符是否相等。
strcmpi和strncmpi分别与strcmp和strncmp相同,只是在比较的过程中忽略了字母大小写。

查找替换

findstr返回某一子串在整个字符串中的开始位置
strrep一般的字符串查找与替换
strmatch查找符合要求的行
strtok查找某个字符最先出现的位置

引用

[1]MATLAB中字符变量(char)和字符串变量(string)的异同_TifLil的博客-CSDN博客_matlab字符串变量

[2]MATLAB字符和字符串 - 简书 (jianshu.com)

7.matlab字符串分析

1  字符串处理函数

 1 clc;
 2 clear all;
 3 str=\'My name is Robin.\';
 4 disp(str);                  %字符串的输出
 5 str_size=size(str)          %字符串的长度
 6 str(1:7)                    %截取字符串的一部分
 7 str2=str(end:-1:1)          %字符串反序输出
 8 str_ascii=double(str)       %字符串的ASCII码显示
 9 char(str_ascii)             %以字符串显示
10 str3=\'大家好!\';            %显示汉字
11 str3_ascii=double(str3)     %显示汉字的编码
12 char(str3_ascii)            %显示汉字

2  字符串的构造

1 clc;
2 clear all;
3 str1=\'My name is \';         %字符串
4 str2=\'Robin\';
5 str=[str1 str2]             %连接两个字符串
6 s=[\'Bob\';\'Tom\']             %建立字符矩阵,长度相等
7 c=char(\'Robinson\',\'Tom\')    %利用char()建立字符矩阵
8 celldata=cellstr(c)         %建立字符串单元数组
9 celldata{1}

3  字符串的比较

1 clc;
2 clear all;
3 str1=\'windows\';
4 str2=\'word\';
5 n=strcmp(str1,str2)         %判断两个字符串是否相等
6 n1=strncmp(str1,str2,1)     %判断前k个字符是否相等
7 n2=strncmp(str1,str2,2)

4  字符串的查找和替换

1 clc;
2 clear all;
3 str=\'My English name is Robin.\';
4 n1=strfind(str,\'n\')
5 n2=strfind(\'n\',str)
6 n3=strfind(str,\'name\')      %查找字符串
7 n4=strfind(str,\'Name\')      %区分大小写
8 n5=strfind(str,\' \')         %查找空格
1 clc;
2 clear all;
3 str=\'My English name is Robin.\';
4 s1=strrep(str,\'Robin\',\'Tom\')    %字符串替换
5 s2=strrep(str,\'robin\',\'Tom\')    %如果没有找到,输出为原来的字符串
6 str2={\'c:\\Robin\';\'c:\\Tom\'};
7 str3=strrep(str2,\'c:\',\'d:\')

6  字符串的转换

1 clc;
2 clear all;
3 t1=num2str(randn(3,3)*100)      %将数字转换为字符串
4 pi=num2str(pi,6)                %只显示6位
5 t2=int2str(randn(3,3))          %先取整,然后转换为字符串
6 x1=str2num(t2)                  %将字符串矩阵转换为数字矩阵
7 x2=str2double(\'123+45i\')        %将字符串转换为双精度数值
8 str=mat2str(magic(3))           %将矩阵转换为字符串

7  字符的分类

1 clc;
2 clear all;
3 str=\'My name is Robin!\';
4 isspace(str)                %是否为空格
5 isletter(str)               %是否为字母

8  字符串的执行

1 clc;
2 clear all;
3 x=0:pi/50:2*pi;
4 %要执行的语句
5 str=\'figure;y=sin(x);plot(x,y);legend(\'\'sinx\'\')\';
6 eval(str);

9  其他操作

1 clc;
2 clear all;
3 str=\'My name is Robinson.\'
4 %全转成大小
5 s1=upper(str)            
6 %全转成小写
7 s2=lower(str)

 

以上是关于Matlab 中的字符(char)和字符串(string)的主要内容,如果未能解决你的问题,请参考以下文章

matlab字符串分割

MATLAB中如何拆分及修改字符串

7.matlab字符串分析

怎样用matlab将字符串数组转为日期数组??

MATLAB怎么将符号变量转换成字符

Matlab 中的字符(char)和字符串(string)