2017-02-22 5 views
-4

Есть ли простой способ преобразования строки, которая выглядит так: [[1,2], [1,3], [1,4]] для массива с массивами?Преобразовать строку array.description в Array

Буду рад.

+3

Это не похоже описанием * словарь . * Как вы получили строку? - Лучше выбрать формат JSON, если вам нужно преобразовать словари/массивы в строку и обратно. –

+0

Извините за ошибку, я подумал о Array ... – Dzeremix

+1

Возможный дубликат http://stackoverflow.com/questions/37391290/convert-string-array-representation-of-integers-into-array-of-integers-in- swift – Moritz

ответ

0

Я сделал этот метод для него, и он работает:

func convertToArray(string: String) -> [[Int]] { 
    var arrayOrder = 0 
    var mainArray: [[Int]] = [] 
    var array: [Int] = [] 

    for character in string.characters { 
     if character == "[" { 
      arrayOrder += 1 
     } 

     if arrayOrder >= 2 && character != "[" && character != "]" && character != "," { 
      let integer: Int = Int(String(character))! 
      array.append(integer) 
     } 

     if character == "]" { 
      if arrayOrder >= 2 { 
       mainArray.append(array) 
       array = [] 
      } 

      arrayOrder -= 1 
     } 
    } 

    return mainArray 
} 
+0

Это только если у нас есть один уровень массивов в основном массиве. – Dzeremix

1

Самый простой вариант, чтобы преобразовать его в формат JSON и обратно:

let str = "[[1,2],[1,3],[1,4]]" 
let data = str.data(using: .utf8)! 

do { 
    let json = try JSONSerialization.jsonObject(with: data, options: []) 
    if let arr = json as? [[Int]] { 
     print(arr) 
    } 
} catch { 
    print(error) 
} 
Смежные вопросы