本节介绍 MATLAB 中由单引号定义的字符数组(char)的基本性质与常用操作。其类型为 1×n 字符数组,按矩阵规则存储与索引;与 Java、Python 等语言中独立的字符串类型不同,此处文本在语法上更接近字符向量。入门阶段建议统一使用单引号 char;较新版本中的双引号 string 类型与之并存,语义与函数支持略有差异。

创建字符串:单引号

my_string = 'Hello World'

使用 whos 可查看变量尺寸与类型:

whos

典型输出类似:

Name         Size     Bytes  Class
my_string    1x11        22  char

1x11 表示 1 行 11 列,每个字符占一列,因此可按数组下标访问:

s = 'MATLAB';
s(1)      % 'M'
s(end)    % 'B'
s(2:4)    % 'ATL'

内容中的单引号

若字符串内部须包含单引号,在 MATLAB 中连写两个单引号表示一个字面单引号:

s = 'online-compiler''s editor'

结果为 online-compiler's editor。此为 MATLAB 约定,并非 C 语言中的反斜杠转义。

字符与编码

字符数组可与无符号整型编码相互转换:

s = 'AB';
uint8(s)          % 65 66(ASCII 码)
char([65 66 67])  % 'ABC'(数字码转回字符)

拼接

横向拼接可使用方括号或 strcat:

first = 'Ada';
last  = 'Lovelace';
[name1] = [first, ' ', last]     % 'Ada Lovelace'
[name2] = strcat(first, ' ', last) % 同样结果

strcat 会去掉各段末尾空格后再拼接;方括号拼接保留原样。多段用固定分隔符连接时可用 strjoin:

words = {'red', 'blue', 'green'};
strjoin(words, '-')   % 'red-blue-green'

多行字符矩阵可用 char 构造,较短行会自动以空格补齐至等长:

profile = char('Ada Lovelace', 'Sr. Engineer', 'London')

大小写与空白

s = '  Hello World  ';
lower(s)        % 转小写
upper(s)        % 转大写
strtrim(s)      % 去掉首尾空白
deblank(s)      % 去掉末尾空白

注意事项

  • 单引号 char 与双引号 string 类型不同;本教程入门部分以单引号为准。
  • 判断两个 char 是否相等应使用 strcmp,不宜对字符数组使用 == 做整体比较。
  • 字符矩阵各行须等长;直接写 ['abc'; 'defgh'] 会报错,可用 char(...) 自动对齐。

本节说明了 char 的创建、索引、转义、编码转换与拼接。下一节介绍字符串处理函数:比较、查找、替换、拆分与 sprintf。