Matlab 中的字符(char)和字符串(string)
Posted RainaRaina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 中的字符(char)和字符串(string)相关的知识,希望对你有一定的参考价值。
目录
一、数据类型定义:向量(char)vs 变量(string)
一、数据类型定义:向量(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)的主要内容,如果未能解决你的问题,请参考以下文章