无法让 Logic App Contains 使用数组或逗号分隔的字符串
Can't get Logic App Contains to work with array or comma separated string
我正在尝试从 for each 循环中查找文本内的特定关键字。
var text = "The lazy fox jumped over the brown dog."
var keywords = "fox,dog,sun";
如果为真,我想对文本做点什么。如果为假,我想忽略文本。
有谁知道如何使用数组过滤器、函数、Select、条件或内联代码来检查这个?如果是这样,具体的例子就太好了。
顺便说一下,我有一个 C# 函数可以在 ASP.net 核心应用程序中非常好地处理这个问题。
更新 1:
这行不通。
更新 2:
即使将设置和并行度更改为 1,for each 循环后条件始终为假。
提前致谢!
解决方法之一是使用 Condition
连接器。我已经在字符串中初始化了句子,然后使用了条件连接器来检查条件。
最后,在真正的部分中,您可以相应地添加连接器。
有很多方法可以满足您的需求。这是我在一分钟内想到的 3 个选项。
- 第一个确实使用了
For each
循环,但我不建议使用它,因为它不是很有效。
For each
参数如下所示:
Condition
参数如下所示:
- 第二个选项更简单 - 不需要循环,直接过滤数组,然后你可以检查它是空的还是有一些项目:
Filter array
参数如下所示。
split
函数与选项 1 中使用的函数相同。
- 如果您知道 JavaScript,您可能会决定在内联代码中使用正则表达式,例如:
然后你只需要检查内联代码的输出。 JavaScript 上面例子中使用的代码:
var text = workflowContext.actions.Compose_text.outputs;
var keywords = workflowContext.actions.Compose_keywords.outputs;
return text.match(new RegExp("(" + keywords.split(",").join("|") + ")", "gi"));
我个人的偏好是选项 2。但是,请注意上面的所有 3 个选项都会在文本“The weather was sunny”中找到“sun”,即使文本中没有单词“sun”。如果您确实需要“sun”来匹配单词“sun”——而不是“sunny”、“asunder”或“unsung”——那么选择选项 3,只需使用不同的、更复杂的正则表达式。
在 for each 循环后面放置一个 Compose 并在条件中引用输出是最终对我有用的方法。我在 Compose 中使用了 toLower() 函数。撰写看起来像这样。
toLower(items('For_each_2')?['day']?['longPhrase'])
我正在尝试从 for each 循环中查找文本内的特定关键字。
var text = "The lazy fox jumped over the brown dog."
var keywords = "fox,dog,sun";
如果为真,我想对文本做点什么。如果为假,我想忽略文本。
有谁知道如何使用数组过滤器、函数、Select、条件或内联代码来检查这个?如果是这样,具体的例子就太好了。
顺便说一下,我有一个 C# 函数可以在 ASP.net 核心应用程序中非常好地处理这个问题。
更新 1:
这行不通。
更新 2:
即使将设置和并行度更改为 1,for each 循环后条件始终为假。
提前致谢!
解决方法之一是使用 Condition
连接器。我已经在字符串中初始化了句子,然后使用了条件连接器来检查条件。
最后,在真正的部分中,您可以相应地添加连接器。
有很多方法可以满足您的需求。这是我在一分钟内想到的 3 个选项。
- 第一个确实使用了
For each
循环,但我不建议使用它,因为它不是很有效。
For each
参数如下所示:
Condition
参数如下所示:
- 第二个选项更简单 - 不需要循环,直接过滤数组,然后你可以检查它是空的还是有一些项目:
Filter array
参数如下所示。
split
函数与选项 1 中使用的函数相同。
- 如果您知道 JavaScript,您可能会决定在内联代码中使用正则表达式,例如:
然后你只需要检查内联代码的输出。 JavaScript 上面例子中使用的代码:
var text = workflowContext.actions.Compose_text.outputs;
var keywords = workflowContext.actions.Compose_keywords.outputs;
return text.match(new RegExp("(" + keywords.split(",").join("|") + ")", "gi"));
我个人的偏好是选项 2。但是,请注意上面的所有 3 个选项都会在文本“The weather was sunny”中找到“sun”,即使文本中没有单词“sun”。如果您确实需要“sun”来匹配单词“sun”——而不是“sunny”、“asunder”或“unsung”——那么选择选项 3,只需使用不同的、更复杂的正则表达式。
在 for each 循环后面放置一个 Compose 并在条件中引用输出是最终对我有用的方法。我在 Compose 中使用了 toLower() 函数。撰写看起来像这样。
toLower(items('For_each_2')?['day']?['longPhrase'])