题目

编写程序,演示实用文本处理:使用 <code>strcat()</code> 与矩阵括号拼接两个文本;使用 <code>strsplit()</code> 按照逗号与空格分割包含多字段的 CSV 行文本;使用 <code>strfind()</code> 检索指定子串出现的起始索引。

输入格式:无需外部输入。

输出格式:依次打印拼接文本、分割后的字段列表与子串定位。

数据范围与约定:字符串基本操作。

思路与算法

1. 拼接两种方式
strcat(s1, s2) 会默认自动裁切掉末尾空白;若需要保留精确空格,应使用中括号拼接字符数组 [s1, " ", s2]。

2. 分割 strsplit
tokens = strsplit(line, delimiter) 返回一个元胞数组,每个元胞存放一个切分后的子字符串。

3. 子串查找 strfind
idx = strfind(text, pattern) 返回匹配项所有出现位置的起始下标整数向量。若无匹配则返回空向量。

完整程序

% Octave / MATLAB 第72题:字符串拼接、分割与查找

% 1. 文本拼接
s1 = "MATLAB";
s2 = "Octave";
joined = [s1, " & ", s2];
fprintf("拼接结果: %s\n", joined);

% 2. 文本按分隔符切分 (CSV 模拟)
csv_line = "Voltage,220.5,Current,4.8,Status,OK";
parts = strsplit(csv_line, ",");
fprintf("\n按逗号切分字段 (%d 个):\n", length(parts));
for i = 1:length(parts)
    fprintf("  字段 %d: %s\n", i, parts{i});
end

% 3. 子串匹配查找
doc_text = "The quick brown fox jumps over the lazy dog";
pat = "the";
% 转小写后不区分大小写匹配
pos = strfind(lower(doc_text), pat);
fprintf("\n在文本中查找子串 '%s' (忽略大小写):\n", pat);
fprintf("出现的起始索引: %s\n", mat2str(pos));

运行示例

输出:

拼接结果: MATLAB & Octave

按逗号切分字段 (6 个):
  字段 1: Voltage
  字段 2: 220.5
  字段 3: Current
  字段 4: 4.8
  字段 5: Status
  字段 6: OK

在文本中查找子串 'the' (忽略大小写):
出现的起始索引: [1 32]