在 MATLAB 中,处理文本主要有两种数据类型:
-
字符数组 (Character Arrays):使用单引号
' '定义,是传统的文本存储方式(如'Hello')。 -
字符串 (Strings):使用双引号
" "定义,是 R2016b 之后推荐的现代文本处理方式(如"Hello")。
1. 创建与基本操作
1.1 定义文本
-
字符串:
str = "MATLAB 2026";(支持缩放,适合处理一系列文本)。 -
字符数组:
chr = 'Science';(本质是字符向量)。
1.2 转换函数
-
string():将其他类型转为字符串。 -
char():将其他类型转为字符数组。 -
cellstr():将字符数组转为元胞数组。
2. 字符串合并与连接
在处理路径或生成文件名时,连接操作最为常用。
-
使用加号
+(仅限字符串):Matlabfilename = "data_" + 2026 + ".mat"; % 结果为 "data_2026.mat" -
使用
strcat:水平连接文本。 -
使用
join:将字符串数组合并,并可指定分隔符。Matlabwords = ["Neural", "Science", "Center"]; title = join(words, "_"); % 结果为 "Neural_Science_Center"
3. 查找与替换
查找特定模式是数据清洗的关键步骤。
| 函数 | 功能描述 |
| contains | 检查是否包含子串(返回逻辑值) |
startsWith / endsWith |
检查开头或结尾 |
| strfind | 查找子串的具体位置 |
| strrep | 简单的文本替换 |
| regexprep | 使用正则表达式进行高级替换 |
示例:
str = "Xenopus laevis oocytes";
if contains(str, "oocytes")
disp("Found Target!");
end
4. 文本分割与修剪
处理实验原始数据或路径名时,分割操作必不可少。
-
split:按分隔符切分字符串。
Matlabpath = "C:/Users/Research/Data"; folders = split(path, "/"); % 返回字符串数组 -
strip:移除开头和结尾的空白字符。
-
extractBetween:提取两个标记之间的文本。
Matlabraw = "ID: [12345] Name: Tadpole"; id = extractBetween(raw, "[", "]"); % 结果为 "12345"
5. 格式化输出
在生成报告或 UI 控件标签时,格式化控制能让输出更专业。
-
compose(推荐):支持矢量化操作的格式化函数。Matlabval = 1.23456; str = compose("The value is %.2f", val); % "The value is 1.23" -
sprintf:返回格式化的字符数组(类似于 C 语言)。
6. 字符串与数值转换
在读取含有数字的文本文件时经常用到。
-
str2double:将字符串/字符数组转为双精度浮点数(最常用)。 -
num2str:将数值转为字符数组。 -
int2str:将整数转为字符数组。
7. 字符串数组的优势
字符串数组(String Array)在处理大量文本数据时具有显著优势:
-
内存效率:比元胞数组(Cell Array of Strings)更节省内存。
-
缺失值处理:支持
missing概念(类似于数值计算中的NaN)。 -
直接比较:可以使用
==或!=直接对比两个字符串数组。
? 专家提示:
-
优先使用双引号:除非您使用的工具箱(Toolbox)明确要求输入
'char'类型,否则在现代 MATLAB 编程中请优先使用双引号"string"。 -
正则表达式:如果您需要处理复杂的逻辑(如提取符合特定格式的邮箱或基因序列),学习
regexp函数将极大提升效率。