当前位置:  开发笔记 > 编程语言 > 正文

如何在Erlang中获取fread一个没有""的字符串

如何解决《如何在Erlang中获取fread一个没有""的字符串》经验,为你挑选了1个好方法。

我对我的程序感到害怕:

{ok, [S]} = io:fread("entry: \n", "~s")

但我明白了 {ok, "string"}

我想得到的只是字符串而不是引号.

所以我可以用它:

digraph:add_vertex(G, S)

并接收顶点字符串而不是"字符串"

我怎样才能做到这一点?



1> Michael..:

这是一种幻觉.引号并不是真的存在.shell或其他显示机制在使用某些上下文呈现时可能会显示它们以表示您正在显示的数据,但在这种情况下,引号实际上只是元数据:

这是你的情况:

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> 

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有