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 に答える