逻辑应用程序 - 从字符串中获取特定子字符串的表达式
Logic App - Expression to get a particular substring from a string
我的逻辑应用中有以下 JSON 输入:
{
"d":{
"results":[
{
"userId":"123",
"payGrade":"KF15-314-370-AGR342-PD1"
},
{
"userId":"456",
"payGrade":"KF14-269-313-AGR291-R4"
},
{
"userId":"789",
"payGrade":"KF14-269-313-AGR289"
}
]
}
}
我只想使用 "AGR-" 之后的最后一个 part/substring 来自 "payGrade"
(即 "PD1" 来自 "KF15-314-370-AGR342-PD1" | "R4" 来自 "KF14-269-313-AGR291-R4" | 如果“AGR”后面没有任何内容,则将其留空)
我一直在查看“substring('text', startIndex, length)”表达式函数,但它只是 returns 来自特定 position/index 的子字符串,所以不确定如何实现这个。
有两种方法,
捷径(我不推荐这样做,因为代码本身是嵌套的,确保 results
数组上有一个循环)
if(equals(length(split(items('For_each')?['payGrade'],'-')),5), last(split(items('For_each')?['payGrade'],'-')),'')
长答案(推荐,简洁易懂)
你可以按照下图中的逻辑
创建一个空数组变量(用于return,因为你在数组中循环并且不能真正return它的任何结果,根据需要修改)
遍历 results
数组
用“-”分割字符串
@{split(items('For_each')?['payGrade'],'-')}
检查split
的结果是4项还是5项的条件
如果有 payGrade
,你应该得到 5 个项目,如果没有 payGrade
,你应该得到 4 个
相应地取值并将其附加到外部作用域上的变量
用那个变量做任何你想做的事。
我的逻辑应用中有以下 JSON 输入:
{
"d":{
"results":[
{
"userId":"123",
"payGrade":"KF15-314-370-AGR342-PD1"
},
{
"userId":"456",
"payGrade":"KF14-269-313-AGR291-R4"
},
{
"userId":"789",
"payGrade":"KF14-269-313-AGR289"
}
]
}
}
我只想使用 "AGR-" 之后的最后一个 part/substring 来自 "payGrade" (即 "PD1" 来自 "KF15-314-370-AGR342-PD1" | "R4" 来自 "KF14-269-313-AGR291-R4" | 如果“AGR”后面没有任何内容,则将其留空)
我一直在查看“substring('text', startIndex, length)”表达式函数,但它只是 returns 来自特定 position/index 的子字符串,所以不确定如何实现这个。
有两种方法,
捷径(我不推荐这样做,因为代码本身是嵌套的,确保 results
数组上有一个循环)
if(equals(length(split(items('For_each')?['payGrade'],'-')),5), last(split(items('For_each')?['payGrade'],'-')),'')
长答案(推荐,简洁易懂)
你可以按照下图中的逻辑
创建一个空数组变量(用于return,因为你在数组中循环并且不能真正return它的任何结果,根据需要修改)
遍历
results
数组用“-”分割字符串
@{split(items('For_each')?['payGrade'],'-')}
检查
split
的结果是4项还是5项的条件
如果有 payGrade
,你应该得到 5 个项目,如果没有 payGrade
相应地取值并将其附加到外部作用域上的变量
用那个变量做任何你想做的事。