簡體   English   中英

Swift將一個字符串作為數組轉換為字符串數組

[英]Swift Convert A String-As-An-Array, To An Array Of Strings

我有一個字符串:

"["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)")

將您的“字符串數組”編碼為數據,然后將此數據作為JSON解碼為Swift Array。

像這樣:

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"

同意上面的評論,我可能會使用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()
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM