You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用List.ContainsAny实现与Text.Contains一致的排除词匹配效果

你简化代码逻辑不符的核心问题是对List.ContainsAny函数的作用理解有误:

  • List.ContainsAny的逻辑是判断第一个输入列表中是否存在任意元素,完全匹配第二个输入列表中的任意元素
  • 你传入的第一个参数是{[ColumnName]},相当于仅判断整段文本是否完全等于"pie"或"cake",和你原代码中「判断文本是否包含pie/cake」的逻辑完全不同

你可以通过List.Transform+List.AllTrue的组合实现逻辑完全等价的简化写法,后续新增排除关键词只需修改排除关键词列表即可,无需重复编写判断语句:

if Text.Contains([ColumnName], "apple", Comparer.OrdinalIgnoreCase) and
List.AllTrue(List.Transform({"pie", "cake"}, (excludeKeyword) => not Text.Contains([ColumnName], excludeKeyword, Comparer.OrdinalIgnoreCase)))
then "Apple" 
else "Null"

如果更习惯原代码的否定前置写法,也可以用List.AnyTrue实现:

if Text.Contains([ColumnName], "apple", Comparer.OrdinalIgnoreCase) and
not List.AnyTrue(List.Transform({"pie", "cake"}, (excludeKeyword) => Text.Contains([ColumnName], excludeKeyword, Comparer.OrdinalIgnoreCase)))
then "Apple" 
else "Null"

内容的提问来源于stack exchange,提问作者Sporty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:54:02