在MATLAB中创建一个字符string非常简单。事实上,我们已经使用了很多次。例如,在命令提示符下键入以下内容:
代码语言:javascript复制my_string = "Tutorials Point"
MATLAB将执行上述语句并返回以下结果
代码语言:javascript复制my_string = Tutorials Point
MATLAB将所有变量视为数组,并将字符string视为字符数组。让我们使用whos命令来检查上面创建的变量 -
代码语言:javascript复制whos
MATLAB将执行上述语句并返回以下结果 -
代码语言:javascript复制Name Size Bytes Class Attributes
my_string 1x16 32 char
矩形字符数组
到目前为止我们探讨的字符string是一维字符数组; 但是,我们需要存储的不止一个。我们需要在我们的程序中存储更多的维度文本数据。这是通过创建矩形字符数组实现的。
创建矩形字符数组的最简单方法是根据需要垂直或水平连接两个或更多个一维字符数组。
您可以通过以下任一方式垂直组合字符string -
- 使用MATLAB连接运算符[]并用分号(;)分隔每行。请注意,在这种方法中,每行必须包含相同数量的字符。对于不同长度的字符string,您应该根据需要填充空格字符。
- 使用char函数。如果字符string的长度不同,则char将较短的字符string填充到尾部空白处,以使每行具有相同的字符数。
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制doc_profile = ["Zara Ali "; ...
"Sr. Surgeon "; ...
"R N Tagore Cardiology Research Center"]
doc_profile = char(strcat("Zara Ali", strcat("Sr. Surgeon",strcat("RN Tagore Cardiology Research Center"))))
运行文件时,会显示以下结果 -
代码语言:javascript复制doc_profile =Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
您可以通过以下任一方式水平组合字符string -
- 使用MATLAB连接运算符,[]并用逗号或空格分隔输入字符string。该方法保留输入数组中的任何尾随空格。
- 使用字符string连接功能,strcat。此方法会删除输入中的尾随空格。
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制name = "Zara Ali ";
position = "Sr. Surgeon ";
worksAt = "R N Tagore Cardiology Research Center";
profile = [name ", " position ", " worksAt]
profile = strcat(name, ", ", position, ", ", worksAt)
运行文件时,会显示以下结果 -
代码语言:javascript复制profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
将字符string组合成单元格数组
从我们之前的探讨中可以清楚的表明,组合不同长度的字符string可能会很痛苦,因为数组中的所有字符string都必须具有相同的长度。我们在字符string的末尾使用了空格,使其长度相等。
然而,组合字符string的更有效的方法是将生成的数组转换为单元格数组。
MATLAB单元格数组可以在数组中保存不同大小和类型的数据。单元格数组提供了一种更灵活的方式来存储不同长度的字符string。
cellstr的函数转换字符数组成字符string的单元数组。
例
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制name = "Zara Ali ";
position = "Sr. Surgeon ";
worksAt = "R N Tagore Cardiology Research Center";
profile = char(strcat(name, position, worksAt));
profile = cellstr(profile);
disp(profile)
运行文件时,会显示以下结果 -
代码语言:javascript复制{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
MATLAB中的字符string函数
MATLAB提供了许多字符string函数来创建,组合,解析,比较和操作字符string。
下表简要介绍了MATLAB中的字符string函数 -
功能 | 目的 |
---|---|
用于将文本存储在字符数组中,组合字符数组等的功能 | |
空白 | 创建空白字符的字符string |
char | 转换为字符数组(字符string) |
iscellstr | 确定输入是字符string的单元格数组 |
sprintf | 将数据格式化为字符string |
strcat | 水平连接字符string |
strjoin | 将单元格数组中的字符string连接到单个字符string中 |
识别字符string部分的函数,查找和替换子string | |
isspace | 数组元素是空格 |
isstrprop | 确定字符string是否是指定的类别 |
sscanf | 从字符string读取格式化数据 |
strfind | 在另一个中找到一个字符string |
strrep | 查找并替换子string |
strsplit | 在指定的分隔符处拆分字符string |
strtok | 字符string的选定部分 |
symvar | 确定表达式中的符号变量 |
regexprep | 使用正则表达式替换字符string |
字符string比较功能 | |
strcmp | 比较字符string(区分大小写) |
strcmpi | 比较字符string(不区分大小写) |
strncmp | 比较字符string的前n个字符(区分大小写) |
strncmpi | 比较字符string的前n个字符(不区分大小写) |
将字符string更改为大写或小写的功能,创建或删除空格 | |
deblank | 从字符string末尾剥去尾随空白 |
strtrim | 从字符string中删除前导和尾随的空格 |
例子
以下示例说明了一些上述字符string函数 -
格式化字符string
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制A = pi*1000*ones(1,5);
sprintf(" %f %.2f % .2f .2f 2.2f ", A)
运行文件时,会显示以下结果 -
连接字符string
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制�ll array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
运行文件时,会显示以下结果 -
代码语言:javascript复制str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
查找和替换字符string
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')% Display first names
first_names = strtok(students)
运行文件时,会显示以下结果
比较字符string
创建脚本文件并在其中键入以下代码 -
代码语言:javascript复制str1 = "This is test"
str2 = "This is text"
if (strcmp(str1, str2))
sprintf("%s and %s are equal", str1, str2)
else
sprintf("%s and %s are not equal", str1, str2)
end
运行文件时,会显示以下结果 -
代码语言:javascript复制str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal