Azure Logic Apps迭代文件后Join操作失效问题求助
问题原因及解决方案
核心问题
你当前的逻辑只是将目标行替换为空字符串,但For Each会保留所有迭代项(包括空字符串),后续Join操作会把数组里的空字符串也参与拼接,导致结果中仍存在无效的空内容,而非真正过滤掉这些行。
解决方案
方案1:用Filter Array直接过滤(推荐)
抛弃For Each的替换逻辑,改用Filter Array操作直接剔除不符合条件的行,效率更高且逻辑更清晰:
- 设置Filter Array的输入为读取到的文本行数组
- 过滤条件使用表达式:
这样会直接保留所有从163位开始3个字符不是not(equals(substring(item(), 163, 3), '525'))525的行,输出的数组仅包含有效行,后续直接Join即可:if(empty(body('Filter_Array')), '', join(body('Filter_Array'), ' '))
方案2:保留For Each但过滤空元素
如果必须使用For Each,需要在Join前先过滤掉数组中的空字符串:
- 将原Join表达式修改为:
其中if(empty(outputs('Row_iteration')), '', join(filter(outputs('Row_iteration'), not(empty(item()))), ' '))filter(outputs('Row_iteration'), not(empty(item())))会剔除数组中的空元素,只保留非空的有效行,再进行拼接。
内容的提问来源于stack exchange,提问作者USSSR
相关产品推荐
相关产品推荐

