我有以下代码。
let s1 = [(12, "abcde12345"); (23, "bcdef2345"); (12, "xyzafg3838")]
let s2 = ["bcd"; "345"]
s1
找到第二个项目具有任何一个的子字符串的所有项目的最佳方法是s2
什么?
(12,“abcde12345”);(23,“bcdef2345”)
在我的真实代码中,s1 是一个Seq
.
Seq.filter (fun (_, x) -> List.exists (x.Contains) s2) s1
我想出了一个。
s1 |> Seq.filter (fun i -> List.exists (fun e -> (snd i).Contains(e)) s2)
将第二组中的所有项目连接到正则表达式中,然后将其应用于第一组中的每个项目。
open System
open System.Text.RegularExpressions
let setA = [ "One"; "Two"; "Three" ]
let setB = [ "o"; "n" ];
let pattern = String.Join("|", setB);
let regex = new Regex(pattern);
let results = setA |> List.filter (fun str -> regex.Match(str).Success)
results |> List.iter (fun result -> Console.WriteLine(result))