erlang - 如何将整数列表连接到 Erlang 中的字符串?
问题描述
我有一个整数列表:
X = [1, 2, 3, 4, 5, 6].
我想将字符串"1 2 3 4 5 6"
作为输出。
我试过string:join(X, " ")
了,但它不起作用。
我也试过_X = lists:join(X, " "),
,但它导致一个空字符串“”。当我打印它时erlang:display(_X).
Erlang 中是否有内置方法可以做到这一点?
解决方案
两者string:join/2
和lists:join/2
都会产生所需的结果,但都需要先将整数转换为字符串。您可以使用列表推导来做到这一点:
1> X = [1, 2, 3, 4, 5, 6].
[1,2,3,4,5,6]
2> string:join([integer_to_list(I) || I <- X], " ").
"1 2 3 4 5 6"
3> lists:join(" ", [integer_to_list(I) || I <- X]).
["1"," ","2"," ","3"," ","4"," ","5"," ","6"]
4> lists:flatten(lists:join(" ", [integer_to_list(I) || I <- X])).
"1 2 3 4 5 6"
请注意,lists:join/2
将分隔符作为其第一个参数,而string:join/2
将其作为第二个参数。
另请注意,它lists:join/2
返回一个新列表,其中输入列表的元素由分隔符分隔。当分隔符也是一个列表时,要获得一个平面列表,如lists:flatten/1
上面的最终命令所示。
最后,请注意那string:join/2
是 obsolete,你应该使用它lists:join/2
。
推荐阅读
- c - ncursesw 函数未声明
- java - 在最近的应用程序按钮上的android中调用了哪个方法
- sql - 选择 COUNT distinct 并将其向上舍入到最接近的 hr
- python - 在同一个项目中使用 Fabric 2 和 Fabric 3
- ruby - Rspec 未通过测试,其中 'Diff:' 看起来相同
- vega-lite - 变通以显示基于周期时间列的 vega-lite 图表?
- google-data-studio - 使用 CASE WHEN 语句和聚合创建字段失败
- angular - 从 Angular 应用程序启动/停止 docker 的容器
- mongodb - 包含日期范围的最佳 Mongo 索引策略是什么
- django - 如何覆盖 Django 管理员/表单用于外键的查询集