在Elixir中处理文件流中的字符串

时间:2017-09-11 23:40:48

标签: stream elixir

我是Elixir的新手。 我正在尝试从文件中获取文本以变成图形。

文件格式如下:

1 2
1 3
2 3

每个数字都是已连接节点的ID。

如何将String.split / 1函数中的2个值带到程序中的其他位置?这是我到目前为止所做的:

File.stream!("../text_file") 
   |> Stream.map( &(String.replace(&1, "\n", ""))) 
   |> Enum.each(String.split/1)

它只会输出:ok atom,但如果我将String.split / 1替换为IO.puts / 1

,它将打印内容

1 个答案:

答案 0 :(得分:1)

Enum.each/2适用于您不关心返回值的函数(通常只有副作用的函数,如IO.puts)。如果要收集返回的数据,则需要Enum.map/2。此外,如果要删除尾随空格,则应使用String.trim_trailing/1

File.stream!("a") 
|> Stream.map(&String.trim_trailing/1)
|> Enum.map(&String.split/1)
|> IO.inspect

输出:

[["1", "2"], ["1", "3"], ["2", "3"]]