Swift将字符串作为数组转换为字符串数组

时间:2016-04-20 00:34:41

标签: arrays string swift

我有一个字符串:

"["word1","word2"]"

我想要一种简单的方法将其转换为实际的[String]

我可以在那里挖掘的所有其他问题都是关于将int字符串转换为数组。

我试过

Array(arrayLiteral: "["word1","word2"]")

但是我得到了

["[\"word1\",\"word2\"]"]

手动清理边缘并删除斜线似乎我做错了。

我很好奇是否有一种简单的方法可以将字符串数组转换为字符串数组。

即。将"["word1","word2"]"转换为["word1","word2"]

解决方案(感谢@Eric D)

    let data = stringArrayString.dataUsingEncoding(NSUTF8StringEncoding)

    var stringsArray:[String]!

    do
    {
        stringsArray = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String]
    } catch
    {
        print()
    }

    print("Array is \(stringsArray)")

2 个答案:

答案 0 :(得分:3)

将“字符串数组”编码为数据,然后将此数据作为JSON解码为Swift数组。

像这样,例如:

let source = "[\"word1\",\"word2\"]"

guard let data = source.dataUsingEncoding(NSUTF8StringEncoding),
    arrayOfStrings = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String] else {
        fatalError()
}

print(arrayOfStrings)  // ["word1", "word2"]
print(arrayOfStrings[1])  // "word2"

答案 1 :(得分:1)

同意上面的评论,我可能会使用JSON解析器。如果失败了(或者由于某种原因你不能),我不知道任何内置方式;你必须手动完成。我做了类似的事情:

extension String {
    func stringByTrimmingFirstAndLast() -> String {
        let startIndex = self.startIndex.successor()
        let endIndex = self.endIndex.predecessor()
        return self.substringWithRange( startIndex..<endIndex )
    }
}

let str = "[\"word1\",\"word2\"]"
let array = str
    .stringByTrimmingFirstAndLast()
    .componentsSeparatedByString(",")
    .map { string in
        return string.stringByTrimmingFirstAndLast()
    }