MATLAB字符串处理函数用来对文本做比较、查找、替换和拆分。判断两个字符串是否相等,也走这里,不要直接用 ==

比较: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'

对 cell 数组也有效,可以一次替换一批:

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
  • 忽略大小写比较用哪个函数?
  • strrep('banana','a','o') 会替换所有 a 还是只第一个?
  • '2026-08-12'- 拆成三段,用什么函数?
  • 想用 sprintf 打出圆周率是 3.14 这类句子,格式串怎么写?