F#Seq <seq <char >>转换为字符串

时间:2019-04-07 19:07:14

标签: f#

使用F#并尝试从字符串abcdefghijklmnop中获取另一个字符串aeimbfjncgkodhlp

let input ="abcdefghijklmnop"

let convertList (input:string)=
    input
    |> Seq.mapi(fun i ei->  i % 4, ei)
    |> Seq.groupBy (fst)
    |> Seq.map(fun (g,s)-> s |> Seq.map snd)

let result = convertList input

result

在我的函数中,最终结果是seq<seq<char>>,如何将seq<seq<char>>转换为字符串?

1 个答案:

答案 0 :(得分:4)

在F#中,string类型实现了seq<_>接口,这意味着您可以将字符串视为字符序列,但是反过来却很难看。

一种选择是使用seq<seq<char>>seq<char>变成一个Seq.concat,然后将其转换为seq<string>,然后可以使用String.concat进行连接:

result |> Seq.concat |> Seq.map string |> String.concat ""

可能更有效,但不太优雅的选择是将seq<char>转换为array<char>,然后将其传递给System.String构造函数:

result |> Seq.concat |> Seq.toArray |> System.String