2017-02-25 15 views
0

の分割文字列int配列私は整数の配列に文字列を分割しようとしている:スウィフト3:のInt

let stringNumbers = "1 2 10" 
var arrayIntegers = stringNumbers.characters.flatMap{Int(String($0))} 

しかし、私の問題は、私はこの出力を取得しています:

[1, 2, 1, 0] 

私はこの出力を得る必要があります:

[1, 2, 10] 

私は間違っていますか?

本当にありがとうございます。

+0

可能な重複(http://stackoverflow.com/questions/36765670/converting-a-string-to-an-int-array ) –

+0

あなたはすべての別個の文字を整数に変換しています。すべての複数桁の数字は、その数字が別々の1桁の数字として解釈されます。 – Alexander

答えて

1

使用[int配列に文字列を変換]この

let stringNumbers = "1 2 10" 
let array = stringNumbers.components(separatedBy: " ") 
let intArray = array.map { Int($0)!} // [1, 2, 10] 
+0

'!'を使って注意してください。この特定の文字列では問題は発生しませんが、文字列に数値に変換できないテキストが実際に含まれているとクラッシュします。 – rmaddy

+0

rmaddyとの合意 –

2

文字列の個々の文字を数値に変換しています。最初に1、次にスペース、次に2、スペース、次に1、そして最後に0。空白を変換するコースでnilがある場合は、flatMapを使用して除外されます。

あなたが行うことができます

let stringNumbers = "1 2 10" 
var arrayIntegers = stringNumbers.components(separatedBy: " ").flatMap { Int($0) } 

これは、文字列(スペースで区切っ)の配列に元の文字列を分割して、整数にそれらをマッピングします。

+0

私はあなたに "[Optional(1)、Optional(2)、Optional(10)]"というソリューションを印刷します。どのように数字の配列を印刷するだけですか? – user2924482

+1

'let arrayIntegers = stringNumbers.components(separatedBy:" ").flatMap {Int($ 0)}' –

+1

@LeoDabusありがとう。更新しました。この場合、 'map'はオプションの配列を与えます。文字列に数値に変換できないテキストが含まれている場合、 'flatMap'を使用すると' nil'値は除外されます。 – rmaddy