MATLAB 字符串

MATLAB 字符串

在MATLAB中,创建一个字符字符串非常简单。实际上,我们经常使用它。例如,您在命令提示符中输入以下内容−

my_string = 'Tutorials Point'

MATLAB将执行上述语句并返回以下结果 –

my_string = Tutorials Point

MATLAB将所有变量视为数组,字符串被视为字符数组。让我们使用 whos 命令来检查上面创建的变量-

whos

MATLAB将执行上面的语句,并返回以下结果 –

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

有趣的是,您可以使用数字转换函数,例如 uint8uint16 ,将字符串中的字符转换为其数字代码。函数 char 将整数向量转换回字符 –

示例

创建一个脚本文件并键入以下代码−

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)

当您运行该文件时,它会显示以下结果:

str_ascii =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point
str_16bit =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point

矩形字符数组

到目前为止,我们讨论的字符串都是一维字符数组;然而,我们需要存储更多的内容。我们需要在程序中存储多维文本数据。这可以通过创建矩形字符数组来实现。

创建矩形字符数组的最简单方法是通过将两个或多个一维字符数组进行拼接,根据需要可以垂直或水平拼接。

可以按照以下方式垂直组合字符串:

  • 使用MATLAB的拼接运算符 [] ,并使用分号(;)分隔每行。请注意,在这种方法中,每行必须包含相同数量的字符。对于长度不同的字符串,您应该使用空格字符进行填充。

  • 使用 char 函数。如果字符串的长度不同,char函数会用尾部空格填充较短的字符串,使每行具有相同数量的字符。

示例

创建一个脚本文件,并将以下代码键入其中 –

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

当你运行该文件时,会显示以下结果−

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

以下是将字符串水平组合的两种方法:

  • 使用MATLAB连接运算符 [] ,并使用逗号或空格分隔输入的字符串。这个方法保留输入数组中的任何尾随空格。

  • 使用字符串连接函数 strcat 。这个方法会删除输入中的尾随空格。

示例

创建一个脚本文件,并将以下代码键入其中 –

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

当您运行文件时,它将显示以下结果−

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

将字符串组合到一个cell数组中

从我们之前的讨论中,清楚地可以看出将长度不同的字符串组合起来可能会很困难,因为数组中的所有字符串必须具有相同的长度。我们在字符串末尾使用空格来使它们的长度相等。

然而,将字符串组合的更有效的方法是将结果数组转换为一个cell数组。

MATLAB的cell数组可以在一个数组中持有不同大小和类型的数据。cell数组提供了一种更灵活的方式来存储长度各异的字符串。

cellstr 函数将字符数组转换为一个字符串的cell数组。

示例

创建一个脚本文件并将以下代码输入其中 –

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

当你运行该文件时,它会显示以下结果:

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

MATLAB中的字符串函数

MATLAB提供了许多字符串函数,用于创建、组合、解析、比较和操作字符串。

下表提供了MATLAB中字符串函数的简要描述:

用于在字符数组中存储文本、组合字符数组等的函数。

功能 目的
blanks 创建一串空白字符
cellstr 从字符数组创建单元数组
char 转换为字符数组(字符串)
iscellstr 确定输入是否为单元数组
ischar 确定项目是否为字符数组
sprintf 将数据格式化为字符串
strcat 将字符串水平连接
strjoin 将单元数组中的字符串连接成单个字符串

用于识别字符串部分、查找和替换子字符串的函数

功能 目的
ischar 确定项目是否为字符数组
isletter 字母元素数组
isspace 空格字符元素数组
isstrprop 确定字符串是否为指定类别
sscanf 从字符串中读取格式化数据
strfind 在另一个字符串中查找一个字符串
strrep 查找并替换子字符串
strsplit 按指定分隔符拆分字符串
strtok 提取字符串的部分
validatestring 检查文本字符串的有效性
symvar 确定表达式中的符号变量
regexp 匹配正则表达式(区分大小写)
regexpi 匹配正则表达式(不区分大小写)
regexprep 使用正则表达式替换字符串
regexptranslate 将字符串转换为正则表达式

字符串比较函数

功能 目的
strcmp 比较字符串(区分大小写)
strcmpi 比较字符串(不区分大小写)
strncmp 比较字符串的前n个字符(区分大小写)
strncmpi 比较字符串的前n个字符(不区分大小写)

将字符串转换为大写或小写,创建或删除空白的函数

功能 目的
deblank 从字符串末尾删除尾随空格
strtrim 从字符串中删除前导和尾随空格
lower 将字符串转换为小写
upper 将字符串转换为大写
strjust 对字符数组进行对齐

示例

以下示例演示了一些上述字符串函数:

格式化字符串

创建一个脚本文件,并输入以下代码:

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

运行文件时,会显示以下结果 –

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

连接字符串

创建一个脚本文件,并将以下代码输入其中:

%cell 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, ",")

当您运行该文件时,它会显示如下结果−

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

查找和替换字符串

创建一个脚本文件并将以下代码键入其中:

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)

当你运行该文件时,它会显示以下结果 −

new_student = 
{
   [1,1] = Poulomi Dutta
}
first_names = 
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

字符串比较

创建一个脚本文件,并将以下代码输入其中:

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

当您运行文件时,它会显示以下结果−

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程