在MATLAB中建设一个字符串很是简朴。 事实上,在前面的示例中我们已经利用了许多次。 譬喻,在呼吁提示符下键入以下内容:
my_string = 'Yiibai Yiibai'
MATLAB执行上述语句并返回以下功效 –
Trial>> my_string = 'Yiibai Yiibai'
my_string =
'Yiibai Yiibai'
MATLAB将所有变量视为数组,并将字符串视为字符数组。利用whos
呼吁来查抄上面建设的变量 –
Trial>> whos
Name Size Bytes Class Attributes
ans 1x92 184 char
my_string 1x16 32 char
x 1x3 360 cell
有趣的是,可以利用uint8
或uint16
等数字转换函数将字符串中的字符转换为数字代码。 char
函数将整数向量转换回到字符 –
示例
建设剧本文件并在个中键入以下代码 –
my_string = 'Yiibai''s Tutorial';
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 =
1×17 uint8 行向量
1 至 15 列
89 105 105 98 97 105 39 115 32 84 117 116 111 114 105
16 至 17 列
97 108
str_back_to_char =
'Yiibai's Tutorial'
str_16bit =
1×17 uint16 行向量
1 至 15 列
89 105 105 98 97 105 39 115 32 84 117 116 111 114 105
16 至 17 列
97 108
str_back_to_char =
'Yiibai's Tutorial'
矩形字符数组
到今朝为止,我们接头的字符串是一维字符数组; 然而,我们需要存储更多维度的数据。在措施中存储更多的维度文本数据。这是通过建设矩形字符数组来实现的。
建设矩形字符阵列的最简朴的方法是按照需要垂直或程度毗连两个或更多个一维字符数组。
通过以下任一方法垂直组合字符串 –
利用MATLAB毗连运算符[]
并用分号(;
)脱离每一行。 请留意,在这种要领中,每行必需包括沟通数量的字符。对付差异长度的字符串,应该按照需要填充空格字符。
利用char
函数。假如字符串的长度差异,则char
将较短的字符串填充到尾部空缺处,以使每行具有沟通的字符数。
示例
建设剧本文件并在个中键入以下代码 –
doc_profile = ['Bara Tli '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Bara Tli', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
运行文件时,会显示以下功效 –
Trial>> doc_profile = ['Bara Tli '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Bara Tli', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
doc_profile =
3×37 char 数组
'Bara Tli '
'Sr. Surgeon '
'R N Tagore Cardiology Research Center'
doc_profile =
3×36 char 数组
'Bara Tli '
'Sr. Surgeon '
'RN Tagore Cardiology Research Center'
可以通过以下任一方法程度组合字符串 –
[]
并用逗号(;
)或空格脱离输入字符串。该要领保存输入数组中的任何尾随空格。strcat
。 此要了解删除输入中的尾随空格。示例
建设剧本文件并在个中键入以下代码 –
name = 'Myra Yli ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
#p#分页标题#e#
执行上面示例代码,获得以下功效 –
Trial>> name = 'Myra Yli ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
profile =
'Myra Yli , Sr. Surgeon , R N Tagore Cardiology Research Center'
profile =
'Myra Yli,Sr. Surgeon,R N Tagore Cardiology Research Center'
将字符串组合成单位格数组
从前面的进修中,很明明,组合差异长度的字符串大概会很疾苦,因为数组中的所有字符串都必需具有沟通的长度。在字符串的末端利用了空格,使其长度相等。
然而,组合字符串的更有效的要领是将生成的数组转换为单位格数组。
MATLAB单位格数组可以在数组中生存差异巨细和范例的数据。单位格数组提供了一种更机动的要领来存储差异长度的字符串。
cellstr
函数将字符数组转换为字符串的单位格数组。
示例
建设剧本文件并在个中键入以下代码 –
name = 'Myra Tli ';
position = 'St. Sargeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
执行上面示例代码,获得以下功效 –
Trial>> name = 'Myra Tli ';
position = 'St. Sargeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
'Myra Tli'
'St. Sargeon'
'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 个字符(不区分巨细写) |
#p#分页标题#e#
将字符串变动为大写或小写,建设或删除空格的函数 –
函数 | 描写 |
---|---|
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 = {'Bara Ali', 'Neha Bhatnagar', ...
'Nonica Malik', 'Madhu Gautam', ...
'Nadhu Sharma', 'Bhawna Sharma',...
'Muha Ali', 'Reva Dutta', ...
'Tunaina 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)
执行上面示例代码,获得以下功效 –
Trial>> students = {'Bara Ali', 'Neha Bhatnagar', ...
'Nonica Malik', 'Madhu Gautam', ...
'Nadhu Sharma', 'Bhawna Sharma',...
'Muha Ali', 'Reva Dutta', ...
'Tunaina 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 cell 数组
{'Poulomi Dutta'}
first_names =
1×10 cell 数组
1 至 7 列
{'Bara'} {'Neha'} {'Nonica'} {'Madhu'} {'Nadhu'} {'Bhawna'} {'Muha'}
8 至 10 列
{'Reva'} {'Tunaina'} {'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