数组(字符串内部)转换,Swift 4

Array (Inside of a String) Conversion, Swift 4

有谁知道在不影响任何字符的情况下将字符串中的数组转换为实际数组的最简单方法吗?

例如:

var array: [String] = []
let myStr = "[\"Hello,\", \"World\"]"
// I would like 'array' to store: ["Hello,", "World"]

我认为这可以用 Array(myStr) 来完成,但那样只会形成一个包含所有字符的数组。

不胜感激。谢谢。

您可以使用 JSONDecoder 对其进行解码,因为它是 JSON。

示例如下:

let myStr = "[\"Hello,\", \"World\"]"
let data = Data(myStr.utf8)

do {
    let decoded = try JSONDecoder().decode([String].self, from: data)
    print("Decoded:", decoded)
} catch {
    fatalError("Error")
}

// Prints:   Decoded: ["Hello,", "World"]

发生了什么:

  1. 您的 myStr 字符串已转换为 Data
  2. 此数据随后被解码为 [String] - 这是一个字符串数组。
  3. 然后打印 [String] 类型的解码数据。

我们使用 do-try-catch 模式来捕获错误,例如输入的格式或数据不正确。