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
有趣的是,您可以使用数字转换函数,例如 uint8 或 uint16 ,将字符串中的字符转换为其数字代码。函数 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