Я что тип строки, например:Преобразование строки в массив Int
var test:String = "[1, 0, 4]";
И мне нужно, чтобы преобразовать его в массив Int:
var testConverted:[Int] = [ 1, 0, 4 ];
Я что тип строки, например:Преобразование строки в массив Int
var test:String = "[1, 0, 4]";
И мне нужно, чтобы преобразовать его в массив Int:
var testConverted:[Int] = [ 1, 0, 4 ];
Вы хотите чтобы обрезать начальную и конечную скобки с помощью 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)
Попробуйте это:
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]
Вы можете пропустить обрезки и вещи и уходят, как это 'пусть testConverted = test.characters.flatMap ({String ($ 0)}) .flatMap ({Int ($ 0)}) ' – Whirlwind
@Whirlwind Это довольно аккуратно, но предполагает однозначное число, что может и не быть тем, что хочет OP. Например, '' [10, 50, 40] "' переходит в '[1, 0, 5, 0, 4, 0]'. Хотя я не вижу причин использовать «flatMap» дважды там, вы могли бы просто «позволить testConverted = test.characters.flatMap {Int (String ($ 0))}' – Hamish
@ originaluser2 Вы правы, спасибо, я поспешил и wasn думая о нескольких цифрах, но скорее сосредоточился на примере OP. – Whirlwind