本节归纳 MATLAB 中对 char 与相关类型进行处理的常用函数:比较、查找、替换、拆分,以及将数值嵌入文本的 sprintf。字符数组的整体相等性应通过 strcmp 等函数判断,不宜直接使用 == 对两个字符串做元素级比较并当作逻辑结论。
比较:strcmp 家族
strcmp('test', 'test') % 1(相等)
strcmp('test', 'text') % 0(不相等)
strcmpi('Test', 'test') % 1(忽略大小写)
strncmp('abcdef', 'abcXYZ', 3) % 1(只比前 3 个字符)返回值为逻辑标量 1 或 0,可直接用于 if 条件:
if strcmp(color, 'red')
disp('是红色')
end查找:strfind
在字符串中查找子串首次出现的位置(可多处):
strfind('banana', 'na') % [3 5]:两处出现的位置替换:strrep
strrep('Hello World', 'World', 'MATLAB') % 'Hello MATLAB'对元胞数组同样有效,可批量替换:
names = {'Reva Dutta', 'Zara Ali'};
strrep(names, 'Reva', 'Poulomi') % {'Poulomi Dutta', 'Zara Ali'}拆分:strsplit 与 strtok
按分隔符拆成多段时使用 strsplit:
parts = strsplit('2026-08-12', '-') % {'2026','08','12'}读取到第一个分隔符(默认为空白)为止的片段,使用 strtok:
[first, rest] = strtok('Ada Lovelace') % first='Ada', rest=' Lovelace'从姓名列表中提取第一个词(名):
students = {'Zara Ali', 'Neha Bhatnagar', 'Monica Malik'};
strtok(students) % 返回 cell:{'Zara','Neha','Monica'}格式化:sprintf
将数值按格式嵌入字符串时使用 sprintf,格式说明与 fprintf 相近,但结果返回为字符向量而非直接输出到命令窗口:
A = pi * 1000;
msg = sprintf('π 的 1000 倍约是 %.2f', A)
disp(msg)msg = 'π 的 1000 倍约是 3141.59'常用格式符:%f 浮点数、%d 整数、%s 字符串、%.2f 保留两位小数、%12.2f 总宽 12 右对齐。
自查要点
- 比较两个字符串是否相等应使用
strcmp,而非==。 - 忽略大小写时使用
strcmpi。 strrep('banana','a','o')会替换所有匹配的a。- 按
-拆分日期字符串可使用strsplit。 - 用
sprintf生成含固定小数位数值的句子时,在格式串中写%.2f等占位符。
本节说明了字符串比较、查找、替换、拆分及 sprintf 的用法。下一节介绍命令窗口格式化输出:fprintf 与 disp 的选用。