You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Automate中拆分字符串提取末尾数字

Power Automate 提取文件名末尾整数实现方案

适用场景

适配你提到的文件名规则:前缀为多段短横线分隔的字符,目标整数为最后一段短横线后的开头连续数字,支持后续带任意额外字符、空格的非标准文件名。

实现方法(推荐正则匹配,步骤最少)

Power Automate 云流已原生支持正则match函数,直接调用即可完成提取,全程无需额外控件:

  • 第一步:提取不带后缀的纯文件名
    使用表达式:
    substring(triggerOutputs()?['headers/x-ms-file-name'], 0, lastIndexOf(triggerOutputs()?['headers/x-ms-file-name'], '.'))
    如果你是从其他控件获取文件名,把triggerOutputs()?['headers/x-ms-file-name']替换成你的文件名变量即可。
  • 第二步:匹配目标整数字符串
    使用表达式:
    first(match(【第一步得到的纯文件名】, '\d+(?=[^\d]*$)').groups)
    正则\d+(?=[^\d]*$)的作用是匹配整个字符串末尾的最后一段连续数字,自动忽略数字后的所有非数字字符,适配你提到的所有异常文件名场景。
  • 可选:如果需要去掉前导零转成纯整数,给上述表达式套一层int()即可:
    int(first(match(【第一步得到的纯文件名】, '\d+(?=[^\d]*$)').groups))

兼容低版本无match函数的实现方法

如果你的环境不支持match函数,用字符串拆分+遍历方法实现:

  1. 初始化三个变量:
    • 纯文件名:字符串类型,赋值为第一步去掉后缀的文件名
    • 目标数字:字符串类型,默认值为空
    • 继续拼接:布尔类型,默认值为true
  2. 按短横线拆分纯文件名,取最后一段,表达式:last(split(variables('纯文件名'), '-'))
  3. 用「Apply to each」遍历上述最后一段的每个字符,拆分字符用chunk(【最后一段字符串】, 1)
  4. 循环内添加条件判断:
    • 条件:variables('继续拼接') 等于 true 且 isInt(item()) 等于 true
    • 满足条件:将目标数字赋值为concat(variables('目标数字'), item())
    • 不满足条件:将继续拼接赋值为false
  5. 循环结束后,目标数字变量就是你要提取的整数字符串。

测试验证

对以下三种文件名测试均能正确提取0303:

  • 标准文件名:BC1234-XX-YY-A-W-0303.pdf
  • 带后缀字符文件名:BC1234-XX-YY-A-W-0303testfile.pdf
  • 带空格文件名:BC1234-XX-YY-A-W-0303 testfile.pdf

内容的提问来源于stack exchange,提问作者user16068355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:24:05