我正在尝试将字符串转换为整数列表。
String = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08".
但是
lists:map(fun(X) -> string:to_integer(X) end, string:tokens(String, " ")).
只是给了我......
[{8,[]}, {2,[]}, {22,[]}, {97,[]}, ... , {91,[]}, {8,[]}]
有人可能会告诉我一个好/好的方式会得到什么?
[8,2,22,97...91,8]
(或者我需要辅助功能吗?)
答案 0 :(得分:7)
这有效:
String = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08".
lists:map(fun(X) -> {Int, _} = string:to_integer(X),
Int end,
string:tokens(String, " ")).
> [8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8]
请参阅,string:to_integer
不返回单个整数,而是返回元组:
to_integer(String) -> {Int,Rest} | {error,Reason}
...所以你必须从这个元组中提取第一个元素以获得实际数字。
答案 1 :(得分:2)
此外,您可以使用列表生成器语法:
[begin {Int,_}=string:to_integer(Token), Int end|| Token<-string:tokens(String," ")].
来自shell:
1> String = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08".
"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08"
2>
2> [begin {Int,_}=string:to_integer(Token), Int end|| Token<-string:tokens(String," ")].
[8,2,22,97,38,15,0,40,0,75,4,5,7,78,52,12,50,77,91,8]
答案 2 :(得分:0)
[list_to_integer(X)|| X&lt; -string:tokens(String,&#34;&#34;)]。