2015-03-23 15 views
6

Tôi đã tự hỏi những gì đơn giản nhất và sạch nhất để đọc một tệp văn bản thành một chuỗi các chuỗi là nhanh chóng.Tệp văn bản Swift thành mảng của chuỗi

Tiêu file:

line 1 
line 2 
line 3 
line 4 

Into một mảng như thế này:

var array = ["line 1","line 2","line 3","line 4"] 

Tôi cũng muốn biết làm thế nào để làm một điều tương tự vào struct như thế này:

Struct struct{ 
    var name: String! 
    var email: String! 
} 

do đó, hãy lấy một tệp văn bản và đặt nó vào trong cấu trúc trong một mảng.

Cảm ơn sự giúp đỡ!

+0

http://stackoverflow.com/questions/24097826/read-and-write-dat a-from-text-file – brimstone

+1

Xem bài đăng này để có một cuộc thảo luận tuyệt vời về các tùy chọn để chuyển đổi tệp văn bản thành một mảng dòng. http://codereview.stackexchange.com/a/100813/79551 – Suragch

Trả lời

6

Trước tiên, bạn phải đọc file:

let text = String(contentsOfFile: someFile, encoding: NSUTF8StringEncoding, error: nil) 

Sau đó, bạn tách nó bằng cách sử dụng dòng componentsSeparatedByString phương pháp:

let lines : [String] = text.componentsSeparatedByString("\n") 
+1

Lưu ý rằng một số tệp không chỉ là '\ n' làm điểm đánh dấu dòng mới. Bạn có thể xem xét sử dụng 'NSCharacterSet.newlineCharacterSet()' và 'componentsSeparatedByCharactersInSet'. – Suragch

+1

Cú pháp Swift mới sẽ là: 'try! let text = String (contentsOfFile: someFile !, encoding: NSUTF8StringEncoding) 'http://stackoverflow.com/questions/32663872/swift2-cannot-invoke-initializer-for-type-nsstring – thumbtackthief

2

Dưới đây là một cách để chuyển đổi một chuỗi thành một mảng (Khi bạn đọc trong văn bản):

var myString = "Here is my string" 

var myArray : [String] = myString.componentsSeparatedByString(" ") 

này trả về một mảng chuỗi với các giá trị sau: ["Here", "is", "my", "string"]

8

Cập nhật cho 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) 
    } 
-1

Cập nhật cho Swift 4:

do { 
    let file = try String(contentsOfFile: path!) 
    let text: [String] = file.components(separatedBy: "\n") 
} catch { 
    Swift.print("Fatal Error: Couldn't read the contents!") 
} 
0

Trong Swift 3 cho tôi làm việc như dưới đây:

Import Foundation 

let lines : [String] = contents.components(separatedBy: "\n") 
Các vấn đề liên quan