本节归纳 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 的选用。