如何在Power Automate中用子字符串数组过滤字符串数组?
解决方案
核心思路
利用Power Automate的any()函数在Filter Array的条件中实现批量子字符串匹配,无需循环即可判断主文件名数组中的每个元素是否包含子字符串数组里的任意一项。
具体配置步骤
准备数据源
- 确保已生成
主文件名数组(如从文件夹获取的文件名列表)和动态子字符串数组(从新文件名提取的con2s19、v1.5.1这类子串)。子字符串数组可直接引用之前动作的输出,也可存入变量备用。
- 确保已生成
配置Filter Array动作
将Filter Array的输入设置为你的
主文件名数组。点击编辑高级模式,替换默认条件为以下表达式:
@any(variables('动态子字符串数组'), contains(item(), item()))若子字符串数组来自某动作输出而非变量,直接替换
variables('动态子字符串数组')为对应动态内容即可(比如body('提取子字符串的Filter_Array'))。逻辑说明:
any()函数遍历子字符串数组,检查是否存在任意一个子串被当前主文件名(Filter Array的当前元素item())包含,只要有一个匹配就保留该文件名。
关键细节
- 嵌套
item()不会冲突:Power Automate会自动区分外层Filter Array的item()(主文件名元素)和内层any()函数的item()(子字符串元素)。 - 特殊字符兼容:子字符串包含
.、-这类字符时无需额外处理,contains()函数会精确匹配子串内容。
示例验证
假设:
- 主文件名数组:
["con2s19_v1.5.1.zip", "con2s20_v1.6.0.zip", "v1.5.1_patch.zip", "test.zip"] - 动态子字符串数组:
["con2s19", "v1.5.1"]
配置后Filter Array的输出会是:["con2s19_v1.5.1.zip", "v1.5.1_patch.zip"],完全符合需求。
内容的提问来源于stack exchange,提问作者k1dfr0std
相关产品推荐
相关产品推荐

