string to tuple swift

时间:2016-11-06 07:09:06

标签: swift xcode string

我正在尝试从文本文件导入数据。我可以阅读该文件,但我不知道如何将String解析为其他内容,例如元组。

文件中的数据(text.txt)被格式化为像素及其颜色

(((0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0)),((63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479))

到目前为止,这是我的代码:

//
//  ViewController.swift

import Cocoa

class ViewController: NSViewController {

    @IBAction func passPix(_ sender: Any) {
        let fileURL = "/Users/IMac/Desktop/text.txt"
        var inString = ("Pix+Col")
        do {
            inString = try String(contentsOfFile: fileURL, encoding:String.Encoding.utf8)

        } catch let error as NSError {
            print("Failed reading from URL: \(fileURL), Error: " + error.localizedDescription)
        }

        print(inString)
    }

}

1 个答案:

答案 0 :(得分:1)

这是我的看法。基本上你用原始String中的方括号替换圆括号,将其转换为JSON对象,然后根据需要遍历生成的JSON对象:

let s = "(((0, 0), (1, 0), (2, 0), (3, 0), (4, 0)),((63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479), (63479, 62451, 63479)))"

var js = String(s.characters.map { $0 == "(" ? "[" : $0 })
js = String(js.characters.map { $0 == ")" ? "]" : $0 })

var data = js.data(using: .utf8)
let json = try! JSONSerialization.jsonObject(with: data!) as! [Any]

let coords = json[0] as! [Any]
let rgbs = json[1] as! [Any]

for (i, coord) in coords.enumerated() {
    print ("\(coord) - \(rgbs[i])")
}

输出将是这样的:

[0, 0] - [63479, 62451, 63479]
[1, 0] - [63479, 62451, 63479]
[2, 0] - [63479, 62451, 63479]
[3, 0] - [63479, 62451, 63479]
[4, 0] - [63479, 62451, 63479]

因此,在每次迭代中,您将得到一个具有x,y坐标的数组,另一个具有该像素的r,g,b颜色值。您可以轻松地将它们转换为元组,但我认为此时没有必要这样做。