2

我正在尝试将字符串转换为整数列表。

  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]

(或者我需要一个辅助函数吗?)

4

3 回答 3

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}

...所以你必须从这个元组中提取第一个元素才能得到实际的数字。

于 2012-09-20T06:29:59.513 回答
2

此外,您可以使用列表生成器语法:

[begin {Int,_}=string:to_integer(Token), Int end|| Token<-string:tokens(String," ")].

从外壳:

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]
于 2012-09-20T07:44:13.173 回答
0

[list_to_integer(X)|| X<-string:tokens(String," ")]。

于 2016-09-12T22:58:26.977 回答