2016-04-21 3 views
2

Я что тип строки, например:Преобразование строки в массив Int

var test:String = "[1, 0, 4]"; 

И мне нужно, чтобы преобразовать его в массив Int:

var testConverted:[Int] = [ 1, 0, 4 ]; 
+1

Вы можете пропустить обрезки и вещи и уходят, как это 'пусть testConverted = test.characters.flatMap ({String ($ 0)}) .flatMap ({Int ($ 0)}) ' – Whirlwind

+0

@Whirlwind Это довольно аккуратно, но предполагает однозначное число, что может и не быть тем, что хочет OP. Например, '' [10, 50, 40] "' переходит в '[1, 0, 5, 0, 4, 0]'. Хотя я не вижу причин использовать «flatMap» дважды там, вы могли бы просто «позволить testConverted = test.characters.flatMap {Int (String ($ 0))}' – Hamish

+0

@ originaluser2 Вы правы, спасибо, я поспешил и wasn думая о нескольких цифрах, но скорее сосредоточился на примере OP. – Whirlwind

ответ

2

Вы хотите чтобы обрезать начальную и конечную скобки с помощью stringByTrimmingCharactersInSet, затем получить массив строковых элементов, используя componentsSeparatedByString. Затем вы можете, наконец, использовать flatMap, чтобы создать массив целых чисел из этого.

Например:

let yourString = "[1, 0, 4]" 

// trim off the start and end brackets of the string – then obtain an array of elements by using componentsSeparatedByString 
let arrayOfStrings = yourString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "[]")).componentsSeparatedByString(", ") 

// flatMap the arrayOfStrings to an array of integers, filtering out any strings that cannot be represented as numbers 
let arrayOfInts = arrayOfStrings.flatMap{Int($0)} 
print(arrayOfInts) 
1

Попробуйте это:

var test = "[1, 0, 4]" 

test = test.substringToIndex(test.endIndex.advancedBy(-1)).substringFromIndex(test.startIndex.advancedBy(1)) 
var result = test.componentsSeparatedByString(", ").flatMap {Int($0)} 
print(result) // [1, 0, 4] 
+1

'flatMap' было бы намного лучше, чем принудительно разворачивать' Int? 'В' map';) Таким образом, вы можете отфильтровывать любые элементы, которые не могут быть представлены как числа без сбоев. – Hamish

+0

Спасибо за ваш совет: D. – Khuong

Смежные вопросы