取中间文本
函数名:wb_取中间文本 / str_SubstrBetween
功能描述
提取原始文本中两个指定标记字符串之间的文本内容。支持返回第一个匹配结果或返回所有匹配结果(以垂直数组形式输出)。
会员等级:🟢 免费版(Free)
语法
excel
=str_SubstrBetween(文本, 开始标记, 结束标记, 返回全部)参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 文本 | String | 是 | 无 | 原始文本 |
| 开始标记 | String | 是 | 无 | 开始截取的标记字符串 |
| 结束标记 | String | 是 | 无 | 结束截取的标记字符串 |
| 返回全部 | Boolean | 否 | FALSE | TRUE(1)=返回所有匹配结果的数组,FALSE(0)=仅返回第一个匹配结果 |
返回值
Object[,] - 两个标记之间的文本内容。当 返回全部 为 FALSE 时,返回 1x1 数组(单个结果);当为 TRUE 时,返回 Nx1 垂直数组(所有匹配结果)。
使用示例
提取第一个匹配
公式:
excel
=str_SubstrBetween("<name>张三</name>", "<name>", "</name>")结果:
张三提取所有匹配
公式:
excel
=str_SubstrBetween("[A]1[B][A]2[B][A]3[B]", "[A]", "[B]", TRUE)结果(垂直数组,需溢出到多个单元格):
1
2
3提取括号内内容
公式:
excel
=str_SubstrBetween("姓名(李四)年龄", "(", ")")结果:
李四技术说明
- 使用
string.IndexOf从当前查找位置开始定位开始标记,定位后移动到开始标记之后继续查找结束标记 - 提取开始标记结束位置到结束标记开始位置之间的子字符串
- 找到一处匹配后,将查找位置移动到结束标记之后继续查找下一处,实现全部匹配提取
返回全部为 TRUE 时,结果以 N 行 1 列的垂直二维数组形式返回,可在 Excel 中溢出显示返回全部为 FALSE 时,仅返回第一个匹配结果(1x1 数组)
错误处理
| 错误场景 | 返回值 |
|---|---|
| 原文本为空或 null | 原文本(1x1 数组) |
| 开始标记或结束标记为空 | "错误: 开始标记和结束标记不能为空" |
| 未找到匹配的中间文本 | "错误: 未找到匹配的中间文本" |
| 处理过程中发生异常 | "错误: {异常信息}" |