极奇策RPA技术教程:查找字符串位置 (NodeFindSubstring) - 自动化开发与配置详细指南

查找字符串位置
📖 节点概述
在指定文本中查找目标子串第一次出现的位置(索引)。支持从正向查找(默认)或反向查找(从末尾向开头)。可选的忽略大小写模式。返回值为子串首字符的索引(从 0 开始),若未找到则返回 -1。该节点为纯数据节点,无执行端口。
💡 使用场景:
- 提取特定字符后的内容:找到分隔符位置,再配合截取节点获取后面的部分。
- 判断字符串中是否包含子串:检查返回值是否 ≥0(也可用“是否包含字符串”节点)。
- 文件路径解析:查找最后一个
/或\的位置,分离目录和文件名。 - 日志分析:定位日志行中时间戳或错误码的起始位置。
- 文本解析:在固定格式文本中查找关键字的偏移量。
🎮 实战连线指南:如何正确使用它?
节点有两个输入端口:原文本(被搜索的内容)和 目标子串(要查找的字符串),以及两个高级选项。输出端口 位置索引 为整数。
场景案例:获取邮箱中 @ 符号的位置
- 获取邮箱地址:从【变量获取】节点读取
email = "user@example.com"。 - 连接节点:
原文本端口连接邮箱字符串。目标子串端口输入或连接"@"。
- 获取位置:
位置索引输出4(字符索引从 0 开始,'u'=0, 's'=1, 'e'=2, 'r'=3, '@'=4)。 - 后续使用:配合【截取字符串】节点,从位置+1 开始截取域名部分。
反向查找示例:获取文件路径中最后一个斜杠的位置
- 原文本:
"/home/user/docs/report.txt" - 目标子串:
"/" - 勾选
从末尾开始找 - 结果:最后一个
/的索引位置(例如18),可用于提取文件名。
⚙️ 引脚与参数说明
📥 输入引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 原文本 | STRING | 被搜索的原始字符串。可通过多行文本框填写或连线传入。 |
| 目标子串 | STRING | 要查找的子字符串。可通过多行文本框填写或连线传入。 |
⚙️ 控件参数
| 控件名称 | 类型 | 说明 |
|---|---|---|
| 原文本 | 多行文本框 | 手动输入被搜索的文本。 |
| 目标子串 | 多行文本框 | 手动输入要查找的字符串。 |
| 忽略大小写 | 复选框(高级) | 勾选后查找时不区分大小写。 |
| 反向查找 | 复选框(高级) | 勾选后从字符串末尾向开头查找(返回最后一个匹配的位置)。 |
📤 输出引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 位置索引 | INT | 子串首次(或末尾匹配)的首字符索引(0 起始),未找到返回 -1。 |
🔧 查找规则
- 默认正向查找:返回第一次出现的子串起始索引。
- 反向查找:返回最后一次出现的子串起始索引(从开头计算的索引值,而非倒数的索引)。
- 忽略大小写:将原文本和目标子串均视为小写进行比较。
- 空字符串处理:如果原文本或目标子串为空,返回 -1。
- 索引从 0 开始:例如字符串
"abc"中查找"b"返回1。
⚠️ 注意事项
- 未找到返回值:-1 是一个常见的约定值,表示未匹配。在后续条件判断中需注意与有效索引 0 的区别。
- 反向查找的索引:返回的索引仍然是从左到右计算的索引,不是反向计数的位置。例如
"ababa"中反向查找"a"返回索引4(最后一个a的位置)。 - 忽略大小写:仅影响匹配比较,输出索引仍基于原字符串(不改变大小写)。
- 多行文本:换行符
\n被视为普通字符,索引包含它们。 - 性能:查找操作时间复杂度 O(n*m) 最坏情况,对于长文本建议控制子串长度。
💎 小贴士:
- 结合【截取字符串】节点,可以根据位置索引提取子串前后部分。
- 如果需要查找所有出现位置(不止第一个或最后一个),建议使用【正则提取】节点。
- 利用反向查找可以实现“取最后一个分隔符之后的内容”这类常见需求。
- 位置索引可以直接用于数值比较(如判断是否 ≥0)。
这篇文档对您有帮助吗?
您的反馈将帮助我们持续优化文档内容

