使用Erlang中的fread从用户/控制台读取多个单词

时间:2018-12-04 03:49:10

标签: functional-programming erlang fread erl

我想读取多个单词并将其存储在使用Erlang的变量中。当我使用fread记录字符串时,它仅记录第一个单词。

1> {ok,[Message]} = io:fread("Type your message : ", "~ts").
Type your message : Hello world
{ok,["Hello"]}
2>  world

因此,“ Hello”被保存到Message中,而不是“ Hello world”中。如何将两个单词都保存到变量消息中。

我正在寻找一个一般性的答案,这样我可以读很多单词,而不仅仅是2个单词,所以请不要只回答2个单词。


所需的输出

{ok,["Hello world"]}

1 个答案:

答案 0 :(得分:1)

请参见io:get_line/1

1> Line = io:get_line("Type your message: ").
Type your message: Hello world. Goodbye.
"Hello world. Goodbye.\n"

2> Line.
"Hello world. Goodbye.\n"

3> DesiredOutput = {ok, [string:strip(Line, right, $\n)]}.
{ok,["Hello world. Goodbye."]}

4> DesiredOutput.
{ok,["Hello world. Goodbye."]}
  

行:

     

该行中的字符由换行符(或文件末尾)终止。   如果I / O设备支持Unicode,则数据可以表示代码点   > 255(latin1范围)。