在列表字符或二进制Erlang后添加新行

在列表字符或二进制Erlang后添加新行,erlang,Erlang,我有这样一份清单: lists:foldl(fun(X,A2) -> lists:append(A2, binary_to_list(X)) end, [], List). 1> ListOfSentences = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>], 1> Printabl

我有这样一份清单:

lists:foldl(fun(X,A2) -> lists:append(A2, binary_to_list(X)) end, [], List).
1> ListOfSentences  = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>],
1> PrintableList = [[X,"\n"] || X <- ListOfSentences],
1> io:format("~s",[PrintableList]).
Lucky Labon: Hey         
Lucky Labon: Keep?
Lucky Labon: Alpine is...
ok
2>
列表=[,],, ]

我正在尝试将所有项目合并到一个项目中,但使用新行

我的尝试是这样的:

lists:foldl(fun(X,A2) -> lists:append(A2, binary_to_list(X)) end, [], List).
1> ListOfSentences  = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>],
1> PrintableList = [[X,"\n"] || X <- ListOfSentences],
1> io:format("~s",[PrintableList]).
Lucky Labon: Hey         
Lucky Labon: Keep?
Lucky Labon: Alpine is...
ok
2>
结果是:

"Lucky Labon: HeyLucky Labon: Keep?Lucky Labon: Alpine is..."
几乎是我想要的,我需要在每个字符串后面加一行

"Lucky Labon: Hey
 Lucky Labon: Keep?
 Lucky Labon: Alpine is..."

如果您只需要打印结果,请使用iolist的概念:

iolist()=可能不正确的列表(byte()| binary()| iolist(),binary()) |[])

然后,您可以像这样轻松地变换列表:

lists:foldl(fun(X,A2) -> lists:append(A2, binary_to_list(X)) end, [], List).
1> ListOfSentences  = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>],
1> PrintableList = [[X,"\n"] || X <- ListOfSentences],
1> io:format("~s",[PrintableList]).
Lucky Labon: Hey         
Lucky Labon: Keep?
Lucky Labon: Alpine is...
ok
2>
1>ListofEntences=[,],
1> 可打印列表=[[X,“\n”]| | X io:format(“~s,[PrintableList])。
拉邦:嘿
幸运的拉邦:继续?
幸运的拉邦:阿尔卑斯山是。。。
好啊
2>

这样做可以避免中间列表的无用副本。

如果只需要打印结果,请使用iolist的概念:

iolist()=可能不正确的列表(byte()| binary()| iolist(),binary()) |[])

然后,您可以像这样轻松地变换列表:

lists:foldl(fun(X,A2) -> lists:append(A2, binary_to_list(X)) end, [], List).
1> ListOfSentences  = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>],
1> PrintableList = [[X,"\n"] || X <- ListOfSentences],
1> io:format("~s",[PrintableList]).
Lucky Labon: Hey         
Lucky Labon: Keep?
Lucky Labon: Alpine is...
ok
2>
1>ListofEntences=[,],
1> 可打印列表=[[X,“\n”]| | X io:format(“~s,[PrintableList])。
拉邦:嘿
幸运的拉邦:继续?
幸运的拉邦:阿尔卑斯山是。。。
好啊
2>

这样做可以避免中间列表的无用副本。

在Erlang中有一个叫做
iolist
的东西。它是继切片面包之后发明的最伟大的东西之一。(我个人认为切片面包一点也不伟大,但它是常用的短语,所以我会保留它。)它是一种允许您非常高效地执行许多操作的格式。例如,如果您只想在
列表中的每个二进制文件后添加一个换行符

> List = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>].
[<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>,
 <<"Lucky Labon: Alpine is...">>]
> S = [[X,$\n] || X <- List].
[[<<"Lucky Labon: Hey">>,10],
 [<<"Lucky Labon: Keep?">>,10],
 [<<"Lucky Labon: Alpine is...">>,10]]
>列表=[,]。
[,,
]

>S=[[X,$\n]| | X在Erlang中有一个词叫做
iolist
。它是继切片面包之后发明的最伟大的东西之一。(我个人认为切片面包一点也不伟大,但它是常用的短语,所以我会保留它。)它是一种允许您非常高效地执行许多操作的格式。例如,如果您只想在
列表中的每个二进制文件后添加一个换行符

> List = [<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>, <<"Lucky Labon: Alpine is...">>].
[<<"Lucky Labon: Hey">>,<<"Lucky Labon: Keep?">>,
 <<"Lucky Labon: Alpine is...">>]
> S = [[X,$\n] || X <- List].
[[<<"Lucky Labon: Hey">>,10],
 [<<"Lucky Labon: Keep?">>,10],
 [<<"Lucky Labon: Alpine is...">>,10]]
>列表=[,]。
[,,
]

>S=[[X,$\n]| | X我不需要打印它。我需要将此值传递给HTML文本,以便它以正确的间距显示,将
“Lucky Labon:Hey\nLucky Labon:Keep?\nLucky Labon:Alpine是…\n”
被HTML理解吗?不,据我所知,您需要插入换行符(
)或段落()如果您希望浏览器打印换行符。您使用哪台web服务器?通常,erlang实现理解erlang术语。我不需要打印它。我需要将此值传递给HTML文本,以便它以正确的间距显示,请问
“Lucky Labon:Hey\nLucky Labon:Keep?\nLucky Labon:Alpine是…\n”
是否被html理解?不,据我所知,您需要插入换行符(
)或段落(…

)如果你想让浏览器打印换行符。你使用哪台web服务器?通常,erlang实现理解erlang术语。很难想到更低效的方法。好吧,OP提供了一个很小的数据集,并且没有要求为具有大量数据的大批量生产系统提供解决方案…;)没有y点学习坏习惯和错误想法,当你能从一开始就做对的时候,解决方案甚至比错误的更简单。的确,毫无疑问。很难想到更低效的方法。好吧,OP提供了一个很小的数据集,并且没有要求为具有巨大数据的大容量生产系统提供解决方案…;)没有如果你能从一开始就改正坏习惯和错误的想法,那么解决方法就比错误的更简单。确实,毫无疑问。是的,用
$\n
而不是
“\n”
是一个更优化的方法:o),当我重新阅读iolist的定义时,我想了很久。是的,用
$\n
而不是
“\n”
是一个更为优化的:o),我想了很久,当我重新阅读iolist定义时。