2015-10-10 14 views
10

Cho đến Swift 2 tôi đã sử dụng phần mở rộng này để loại bỏ nhiều khoảng trắng:Làm thế nào để loại bỏ nhiều khoảng trống trong Strings với Swift 2

func condenseWhitespace() -> String { 
     let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).filter({!Swift.isEmpty($0)}) 
     return " ".join(components) 
} 

nhưng với Swift 2 bây giờ tôi nhận được lỗi

Không thể gọi ' isEmpty 'với một danh sách đối số của loại' (Chuỗi) '

Làm cách nào để xóa nhiều không gian bằng Swift 2? Thnx!

Trả lời

25

Trong Swift 2, join đã trở thành joinWithSeparator và bạn gọi nó trên mảng.

Trong filter, isEmpty nên được gọi trên mục lặp lại hiện tại $0.

Để thay thế khoảng trắng và ký tự xuống dòng với các nhân vật không gian độc đáo như trong câu hỏi của bạn:

extension String { 
    func condenseWhitespace() -> String { 
     let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
     return components.filter { !$0.isEmpty }.joinWithSeparator(" ") 
    } 
} 

let result = "Hello World.\nHello!".condenseWhitespace() // "Hello World. Hello!" 

Bởi vì chức năng của bạn không có bất kỳ tham số bạn có thể biến nó thành một tài sản thay vì:

extension String { 
    var condensedWhitespace: String { 
     let components = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
     return components.filter { !$0.isEmpty }.joinWithSeparator(" ") 
    } 
} 

let result = "Hello World.\nHello!".condensedWhitespace // "Hello World. Hello!" 

Trong Swift 3 thậm chí còn có nhiều thay đổi hơn.

Chức năng:

extension String { 
    func condenseWhitespace() -> String { 
     let components = self.components(separatedBy: NSCharacterSet.whitespacesAndNewlines) 
     return components.filter { !$0.isEmpty }.joined(separator: " ") 
    } 
} 

let result = "Hello World.\nHello!".condenseWhitespace() 

tài sản:

extension String { 
    var condensedWhitespace: String { 
     let components = self.components(separatedBy: NSCharacterSet.whitespacesAndNewlines) 
     return components.filter { !$0.isEmpty }.joined(separator: " ") 
    } 
} 

let result = "Hello World.\nHello!".condensedWhitespace 
+0

công trình đối với tôi :) thanks –

3

SWIFT 3: phiên bản Cleaner

extension String { 
    var condensedWhitespace: String { 
     let components = self.components(separatedBy: .whitespacesAndNewlines) 
     return components.filter { !$0.isEmpty }.joined(separator: " ") 
    } 
} 
Các vấn đề liên quan