# MATLAB字符串

``my_string = 'w3cschool''在线教程'``

MATLAB执行上述语句，返回以下结果：

``````my_string =
w3cschool在线教程``````

MATLAB 认为所有变量，数组和字符串被视为字符数组。

``whos``

MATLAB执行上面的语句，返回以下结果：

``````Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char``````

char 函数整数向量转换回字符：

## 详细例子

``````my_string = 'w3cschool''在线教程';
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 =
Columns 1 through 14
84  117  116  111  114  105   97  108   39  115   32   80  111  105
Columns 15 through 16
110  116
str_back_to_char =
w3cschool在线教程
str_16bit =
Columns 1 through 10
84    117    116    111    114    105     97    108     39    115
Columns 11 through 16
32     80    111    105    110    116
str_back_to_char =
w3cschool在线教程``````

## MATLAB矩形字符数组

• 使用 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``````

## 结合成的字符串单元阵列

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)``````

``````'Zara Ali'
'Sr. Surgeon'
'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
%.2f
%+.2f
%12.2f
%012.2f
', 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', ...
'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 =
'Poulomi Dutta'
first_names =
Columns 1 through 6
Columns 7 through 10
'Nuha'    'Reva'    'Sunaina'    '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``````