如何在字符串中搜索多个字符串?

Beh*_*016 7 powerquery powerbi

如果字符串"This is a test string"包含任何字符串列表项,我想检查powerquery新列{"dog","string","bark"}.

我已经尝试过Text.PositionOfAny("This is a test string",{"dog","string","bark"}),但该函数只接受单字符值

Expression.Error: The value isn't a single-character string.
Run Code Online (Sandbox Code Playgroud)

对此有何解决方案?

Car*_*lsh 9

在这种情况下,您需要将几个M 库函数组合在一起.

你会想Text.Contains对列表多次使用,这是一个很好的例子List.Transform.List.AnyTrue会告诉你是否有任何字符串匹配.

List.AnyTrue(List.Transform({"dog","string","bark"}, (substring) => Text.Contains("This is a test string", substring)))
Run Code Online (Sandbox Code Playgroud)

如果你希望有一个Text.ContainsAny功能,你可以写它!

let
    Text.ContainsAny = (string as text, list as list) as logical =>
        List.AnyTrue(List.Transform(list, (substring) => Text.Contains(string, substring))),
    Invoked = Text.ContainsAny("This is a test string", {"dog","string","bark"})
in
    Invoked
Run Code Online (Sandbox Code Playgroud)


小智 -2

您可以在此处使用正则表达式和逻辑 OR -|表达式:

/dog|string|bark/.test("This is a test string") // retruns true
Run Code Online (Sandbox Code Playgroud)