作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序有一个恐惧:
{ok, [S]} = io:fread("entry: \n", "~s")
但我得到 {ok, "string"}
我只想获取字符串而不是引号。
因此我可以将它用于:
digraph:add_vertex(G, S)
并接收一个顶点字符串而不是“字符串”
我该怎么做?
最佳答案
这是错觉。引号实际上并不存在。外壳或其他显示机制可能会在使用某些上下文呈现时显示它们,以表示您正在显示的数据,但在这种情况下,引号实际上只是元数据:
这是你的情况:
1> {ok, [S]} = io:fread("entry: \n", "~s").
entry:
foo
{ok,["foo"]}
如果严格显示 S,您会看到它是一个只有 3 个字符的列表:
2> io:format("~w~n", [S]).
[102,111,111]
ok
如果你要求 io:format/2 一般地显示数据,尽管使用它对数据解释的最佳表示,它会认为'啊哈,这是一个字符串,我将把它显示为一个字符串':
3> io:format("~p~n", [S]).
"foo"
ok
4>
字符串显然只是列表,所以在这种情况下,必须决定显示为字符串还是列表,并且决定显示为字符串是因为列表字节都表示可打印字符。添加不可打印的字符将因此改变行为,如下所示:
5> io:format("~p~n", [[2|S]]).
[2,102,111,111]
ok
6>
关于functional-programming - 如何在 Erlang 中使用 fread 获取没有 ""的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34250579/
我是一名优秀的程序员,十分优秀!