2015-10-10 9 views
10

स्विफ्ट 2 जब तक मैं इस विस्तार का इस्तेमाल किया कई व्हाइटस्पेस दूर करने के लिए:स्विफ्ट के साथ तार में एक से अधिक रिक्त स्थान को हटाने के लिए कैसे 2

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

लेकिन स्विफ्ट 2 के साथ अब मैं त्रुटि मिलती है

आह्वान नहीं किया जा सकता ' isEmpty 'प्रकार का एक तर्क सूची के साथ' (स्ट्रिंग) '

कैसे मैं अब कई रिक्त स्थान स्विफ्ट 2 के साथ हटाने सकता है? Thnx!

उत्तर

25

स्विफ्ट 2, joinjoinWithSeparator बन गया है और आप इसे सरणी पर कॉल करते हैं।

filter में, isEmpty वर्तमान पुनरावृत्ति आइटम $0 पर कॉल किया जाना चाहिए।

अपने प्रश्न में के रूप में व्हाइटस्पेस और अद्वितीय रिक्ति के साथ न्यू लाइन वर्ण बदलने के लिए:

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!" 

: अपने कार्य किसी भी पैरामीटर नहीं ले करता है

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!" 

क्योंकि आप इसके बजाय एक संपत्ति कर सकता है

स्विफ्ट 3 में और भी बदलाव हैं।

फंक्शन:

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() 

संपत्ति:

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

काम करता है :) धन्यवाद –

3

स्विफ्ट 3: मेरे लिए क्लीनर संस्करण

extension String { 
    var condensedWhitespace: String { 
     let components = self.components(separatedBy: .whitespacesAndNewlines) 
     return components.filter { !$0.isEmpty }.joined(separator: " ") 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे