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

Posted

技术标签:

【中文标题】在 Erlang 中使用 fread 从用户/控制台读取多个单词【英文标题】:Reading multiple words from the user/console using fread in Erlang 【发布时间】:2019-05-05 10:27:04 【问题描述】:

我想读取多个单词并使用 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】:

见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 范围)。

【讨论】:

以上是关于在 Erlang 中使用 fread 从用户/控制台读取多个单词的主要内容,如果未能解决你的问题,请参考以下文章

如何将输入作为元组并将其存储在 Erlang 的变量中?

如何在 Erlang 中读取整数?

如何在 Erlang 中使用变量作为引用传递?

Elixir io_lib 调用 erlang

Erlang:控制Erlang进程崩溃时如何使连接的外部OS进程自动死亡?

如何使用 Erlang 显示数据库用户?