F#格式化带有列表切片的字符串

时间:2016-12-14 12:08:52

标签: list f# transformation

我有一个表示标签和一系列数据值的列表,如下所示:(包含更多元素)

[10; 0; 0; 1; 0; 0; 1]

我想把它写成这样的文件:

|y 10 |x 0 0 1 0 0 1

完成此格式化的最简单方法是什么?

1 个答案:

答案 0 :(得分:6)

您可以使用模式匹配来分隔列表的第一个元素:

let input = [10; 0; 0; 1; 0; 0; 1]
match input with
| label::data ->
    let body = data |> List.map string |> String.concat " "
    printf "|y %d |x %s" label body
| _ -> 
    failwith "Label is missing!"

如果要将数据写入文件,可以使用sprintf(返回字符串)而不是printf。如果你的数据非常大,最好逐个编写数字,而不是在内存中连接一个大字符串,但这个想法是一样的。