逻辑应用程序 - 从字符串中获取特定子字符串的表达式

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'],'-')),'')

长答案(推荐,简洁易懂)

你可以按照下图中的逻辑

  1. 创建一个空数组变量(用于return,因为你在数组中循环并且不能真正return它的任何结果,根据需要修改)

  2. 遍历 results 数组

  3. 用“-”分割字符串 @{split(items('For_each')?['payGrade'],'-')}

  4. 检查split的结果是4项还是5项的条件

如果有 payGrade,你应该得到 5 个项目,如果没有 payGrade

,你应该得到 4 个
  1. 相应地取值并将其附加到外部作用域上的变量

  2. 用那个变量做任何你想做的事。