本节介绍 MATLAB 中由单引号定义的字符数组(char)的基本性质与常用操作。其类型为 1×n 字符数组,按矩阵规则存储与索引;与 Java、Python 等语言中独立的字符串类型不同,此处文本在语法上更接近字符向量。入门阶段建议统一使用单引号 char;较新版本中的双引号 string 类型与之并存,语义与函数支持略有差异。
创建字符串:单引号
my_string = 'Hello World'使用 whos 可查看变量尺寸与类型:
whos典型输出类似:
Name Size Bytes Class
my_string 1x11 22 char1x11 表示 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。