MATLAB-字符串处理

2022-07-27 09:05:08 浏览数 (1)

在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

0 人点赞