我同意其他人认为使用字符列表进行严格的字符串操作可能并不理想.但是,如果您想继续使用这种方法,那么获得接近您要求的东西的一种方法是定义活动模式.例如:
let rec (|Prefix|_|) s l = if s = "" then Some(Prefix l) else match l with | c::(Prefix (s.Substring(1)) xs) when c = s.[0] -> Some(Prefix xs) | _ -> None
然后你就可以使用它:
let rec Process html = match html with | Prefix "-->" tail -> ("→" |> List.of_seq) @ Process tail | head :: tail -> head :: Process tail | [] -> []