2017-06-23 74 views
0
["[\"1\", \"7\", \"13\", \"19\", \"25\"]", "[\"6\", \"12\", \"13\"]"] 

我得到這個作爲輸出如何獲得字符串數組像這樣的斯威夫特如何在swift中獲得正確的字符串數組?

["1", "7", "13", "19", "25", "6", "12", "13"] 

我嘗試了所有這個數組轉換在適當的數組,但沒有運氣。有沒有解決方案?

謝謝!

+0

你想要什麼沙發? –

+0

@Pratik Sanap在追加到數組之前,您需要刪除或替換「\」的出現。 –

+0

編輯您的問題以包含您用於創建陣列的代碼。 –

回答

1

簡單的解決方案(沒有顯著錯誤處理),該字符串可以被視爲JSON

let array = ["[\"1\", \"7\", \"13\", \"19\", \"25\"]", "[\"6\", \"12\", \"13\"]"] 

var result = [String]() 
for item in array { 
    let jsonArray = try! JSONSerialization.jsonObject(with: item.data(using: .utf8)!) as! [String] 
    result.append(contentsOf: jsonArray) 
} 
print(result) 
+0

工作兄弟@vadian謝謝! –

+1

或'let result = array.flatMap {try! JSONSerialization.jsonObject(使用:$ 0.data(使用:.utf8)!)as! [String]}' – Rob

1

首先,假設你有陣列的簡單的數組,可以用flatMap弄平:

let input = [["1", "7", "13", "19", "25"], ["6", "12", "13"]] 
let output = input.flatMap { $0 } 

輸出

[ 「1」, 「7」, 「13」, 「19」, 「25」, 「6」, 「12」, 「13」]

或者,更簡單,只是追加第二個數組的第一個,完全繞過數組的數組:

let array1 = ["1", "7", "13", "19", "25"] 
let array2 = ["6", "12", "13"] 
let output = array1 + array2 

但你的例子看起來像它不是一個數組的數組,而是數組數組的描述,例如是這樣的:

let array1 = ["1", "7", "13", "19", "25"] 
let array2 = ["6", "12", "13"] 
let input = ["\(array1)", "\(array2)"] 

let output = ...      // this is so complicated, I wouldn't bother trying it 

不是搞清楚如何扭轉這種陣列插值字符串,我建議你重新考慮你如何建立的是,繞過插字符串(或陣列description)。

+0

感謝兄弟,但我得到了答案。謝謝你的時間! –

相關問題