Skip to content

取中间文本

函数名:wb_取中间文本 / str_SubstrBetween

功能描述

提取原始文本中两个指定标记字符串之间的文本内容。支持返回第一个匹配结果或返回所有匹配结果(以垂直数组形式输出)。

会员等级:🟢 免费版(Free)

语法

excel
=str_SubstrBetween(文本, 开始标记, 结束标记, 返回全部)

参数

参数名类型必填默认值说明
文本String原始文本
开始标记String开始截取的标记字符串
结束标记String结束截取的标记字符串
返回全部BooleanFALSETRUE(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 数组)
开始标记或结束标记为空"错误: 开始标记和结束标记不能为空"
未找到匹配的中间文本"错误: 未找到匹配的中间文本"
处理过程中发生异常"错误: {异常信息}"

基于源代码最新版本文档