在MATLAB中创建字符串非常简单,实际上,我们已经使用了很多次。例如,您在命令提示符下键入以下内容-
my_string='Learnfk Point'
MATLAB将执行上述语句并返回以下输出-
my_string=Learnfk Point
MATLAB将所有变量视为数组,而字符串则视为字符数组,让我们使用 whos 命令检查上面创建的变量-
whos
MATLAB将执行上述语句并返回以下输出-
Name Size Bytes Class Attributes my_string 1x16 32 char
有趣的是,您可以使用数字转换函数,例如 uint8 或 uint16 ,将字符串中的字符转换为数字代码, char 函数将整数向量转换回字符-
创建一个脚本文件并在其中键入以下代码-
my_string='Learnfk''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=Learnfk's Point
矩形字符数组
到目前为止,我们讨论的字符串是一维字符数组。但是,我们需要存储更多,我们通过创建矩形字符数组来实现的。
创建矩形字符数组的最简单方法是根据需要垂直或水平连接两个或多个一维字符数组。
创建一个脚本文件并在其中键入以下代码-
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
合并到数组
MATLAB单元数组可以在数组中保存不同大小和类型的数据,单元阵列提供了一种更灵活的方式来存储长度可变的字符串。
cellstr 函数将字符数组转换为字符串的单元格数组。
创建一个脚本文件并在其中键入以下代码-
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中的字符串函数-
函数 | 用途 |
---|---|
用于在字符数组中存储文本,组合字符数组等的函数。 | |
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
参考链接
https://www.learnfk.com/matlab/matlab-strings.html
标签:profile,字符,数组,Ali,无涯,MATLAB,str,字符串,Strings From: https://blog.51cto.com/u_14033984/9345504