首页 > 解决方案 > 数组(字符串内部)转换,Swift 4

问题描述

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

例如:

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

我认为它可以完成,Array(myStr)但这只会使所有字符组成一个数组。

帮助将不胜感激。谢谢你。

标签: swift4

解决方案


您可以使用 对其进行解码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 模式来捕获错误,例如不正确的格式或输入的数据。


推荐阅读