Logic App 提取payGrade字符串中AGR片段后末尾子串的表达式方法
实现方案
你可以组合使用 Logic App 内置的 indexOf、substring、split、last、if 函数实现需求,不需要固定截取长度,完整表达式如下:
if( greater(indexOf(items('Apply_to_each')?['payGrade'], 'AGR'), -1), if( greater( length(split(substring(items('Apply_to_each')?['payGrade'], add(indexOf(items('Apply_to_each')?['payGrade'], 'AGR'), 3)), '-')), 1 ), last(split(substring(items('Apply_to_each')?['payGrade'], add(indexOf(items('Apply_to_each')?['payGrade'], 'AGR'), 3)), '-')), '' ), '' )
表达式逻辑说明
- 第一层判断先校验当前
payGrade是否包含AGR字段,不存在直接返回空值,避免函数报错 - 找到
AGR的起始索引后,加3跳过AGR三个字符,截取后续所有内容 - 将截取到的内容按
-分割为数组,判断数组长度:- 长度大于1,说明
AGR后还有用-分隔的后缀,取数组最后一个元素即为所需结果 - 长度等于1,说明
AGR后没有其他分隔内容,返回空值
- 长度大于1,说明
适配场景说明
如果你的逻辑是在Select操作中使用,把表达式里的items('Apply_to_each')?['payGrade']替换为item()?['payGrade']即可直接使用。
测试验证结果
对应你给出的3条测试数据,返回结果和预期完全匹配:
KF15-314-370-AGR342-PD1→ 返回PD1KF14-269-313-AGR291-R4→ 返回R4KF14-269-313-AGR289→ 返回空值
内容的提问来源于stack exchange,提问作者user13747070
相关产品推荐
相关产品推荐

