matlab字符串连接(多个字符串)的经验

您所在的位置:网站首页 c语言将两个字符串连在一起 matlab字符串连接(多个字符串)的经验

matlab字符串连接(多个字符串)的经验

2023-11-17 08:27| 来源: 网络整理| 查看: 265

参考 matlab中字符串连接的3种方法  文章,实验遇到的一些小白问题,如有问题希望大神们给予指导。

Matlab中,两个或多个字符串连接常用的三种方法,如下:

背景知识:

1、char 和 string 区别

从定义的角度来说,单引号‘ ’定义的为char类型,双引号“ ”定义的为string类型。

2、字符串数组(char)和字符串(string)区别

字符串数组就相当于数据类型为char的矩阵或向量,用单引号创建,可以索引。

string相当于一个类,用string()函数创建实例对象,所以有一些函数可以对string进行操作。

 

方法一:[str1,str2] 

字符串数组(char类型)的连接

假设两个char类型

str1 =  'save '; str2 =  '.mat uData'; >> [str1,str2] ans =  'save .mat uData'

假设两个char类型和一个string类型

str1 =  'save '; str2 =  '.mat uData'; str3 = "000"; >> [str1,str3,str2] ans = 1×3 string 数组 "save " "000" ".mat uData";

输出的结果变成string数组,因此可知string优先级高于char的优先级。

如果考虑利用char()函数对结果进行处理会如何?

>> char([str1,str3,str2]) 1×10×3 char 数组 ans(:,:,1) = 'save ' ans(:,:,2) = '123 ' ans(:,:,3) = '.mat uData'

得到一个三维的char类型的矩阵(不知为何有三维,第二、三维分别表示最长字符串的长度10和所要拼接的字符串的数3量)。

因此,[str1,str2,...]的方法是将非char类型的数据转换成char的类型,然后再使用该方法则可以得到char类型的输出结果。

>> [str1, char(str3), str2] ans = 'save 000.mat uData'

方法二:strcat函数

实质上,strcat函数的方法是在string数据类型进行字符拼接,然后将最后的结果转换成类型char的字符串。

下面介绍该方法的一个问题:

str1 =  'save '; %请注意后面的空格 str2 =  '.mat uData'; str3 = "000"; >> char(strcat(str1, str3, str2)) ans = 'save000.mat uData' %请注意后面的空格已丢失

分析后,发现在strcat中会出现该情况,可能是在连接过程中会将空格删除掉,如果是string类型,则不会丢失,如下方法1.

>> char(strcat("save ", str3, str2)) 或者 >> char(strcat('save'," ", str3, str2)) ans = 'save 000.mat uData'

上述两种方法输出正常。值得注意的是,方法2,空格需要采用双引号,这是因为strcat函数在连接字符串主要注意空格的转义方面的知识(现在不太了解,望见谅)

方法三:sprintf函数

>> sprintf('%s%s%s', str1, str3, str2) ans = 'save 000.mat uData'

该方法至今没有发现问题。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3