Swift文本文件到字符串数组

Hen*_*ler 12 string file swift

我想知道将文本文件读入字符串数组中最简单,最干净的是快速的.

文本文件:

line 1
line 2
line 3 
line 4
Run Code Online (Sandbox Code Playgroud)

进入这样的数组:

var array = ["line 1","line 2","line 3","line 4"]
Run Code Online (Sandbox Code Playgroud)

我也想知道如何在这样的结构中做类似的事情:

Struct struct{
   var name: String!
   var email: String!
}
Run Code Online (Sandbox Code Playgroud)

所以拿一个文本文件并将其放入数组中的struct中.

谢谢您的帮助!

Adr*_*ian 14

针对Swift 3进行了更新

    var arrayOfStrings: [String]?

    do {
        // This solution assumes  you've got the file in your bundle
        if let path = Bundle.main.path(forResource: "YourTextFilename", ofType: "txt"){
            let data = try String(contentsOfFile:path, encoding: String.Encoding.utf8)                
            arrayOfStrings = data.components(separatedBy: "\n")
            print(arrayOfStrings)
        }
    } catch let err as NSError {
        // do something with Error
        print(err)
    }
Run Code Online (Sandbox Code Playgroud)


Ian*_*Ian 10

首先,你必须阅读文件:

let text = String(contentsOfFile: someFile, encoding: NSUTF8StringEncoding, error: nil)
Run Code Online (Sandbox Code Playgroud)

然后使用以下componentsSeparatedByString方法将其分开:

let lines : [String] = text.componentsSeparatedByString("\n")
Run Code Online (Sandbox Code Playgroud)

  • 请注意,某些文件不只是将 `\n` 作为换行标记。你可以考虑使用 `NSCharacterSet.newlineCharacterSet()` 和 `componentsSeparatedByCharactersInSet`。 (2认同)

Cri*_*ian 5

为 Swift 5 更新:

const 路径包含文件路径。

do {
    let path: String = "file.txt"
    let file = try String(contentsOfFile: path)
    let text: [String] = file.components(separatedBy: "\n")
} catch let error {
    Swift.print("Fatal Error: \(error.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)

如果要file.txt逐行打印里面的内容:

for line in text {
    Swift.print(line)
}
Run Code Online (Sandbox Code Playgroud)