2014-10-23 11 views
5

मुझे स्ट्रिंग से पूंजी अक्षरों की आवश्यकता है। NSString के साथ यह sth तरह था:स्विफ्ट स्ट्रिंग से कैपिटल अक्षरों को कैसे चुनें?

for (var i = 0; i<str.length; i++) { 

    let c = str.characterAtIndex(i) 

    if c >= 'A' && c < 'Z' { 
     //.. 
    } 
} 

स्विफ्ट में यह की तरह शुरू होता है:

for (var i = 0; i<countElements(str); i++) { 
    //.. 
} 

लेकिन मैं नहीं जानता कि यानी मैं कैसे-वें चरित्र लेने के लिए, मैं जाँच कर रहा हूँ this

उत्तर

4

के लिए उदाहरण स्विफ्ट में यह काम ठीक है:

var st = "Hello World" 

for ch in st { 
    if ch >= "A" && ch <= "Z"{ 
     println(ch) 
    } 
} 

और प्रिंट

H 
W 

या आप कर सकते थे इस बजाय:

var range = "A"..."Z" 

for ch in st { 
    if range.contains(String(ch)) { 
     println(ch) 
    } 
} 

या @Gabrielle का समाधान स्विफ्ट 2.0 के लिए अद्यतन:

func capitalLetters(s: String) -> [Character] { 
    return s.characters.filter { ("A"..."Z").contains($0) } 
} 

capitalLetters("fOo BAr") // ["O", "B", "A"] 
+1

उपलब्ध कराने @ János इस http://oleb.net/blog/2014/07/swift- से वाक्य रचना अच्छे बना सकता है स्ट्रिंग्स/स्विफ्ट में स्ट्रिंग्स को बहुत कम करने में मदद कर सकता है। –

5

यहाँ तेज

में एक से थोड़ा अधिक मुहावरेदार संस्करण है
func capitalLetters(s: String) -> [Character] { 
    return filter(s) { ("A"..."Z").contains($0) } 
} 

capitalLetters("fOo BAr") // ["O", "B", "A"] 

या यहाँ तक कि:

func capitalLetters(s: String) -> [Character] { 
    func isCapital(c: Character) -> Bool { 
     return ("A"..."Z").contains(c) 
    } 
    return filter(s, isCapital) 
} 

capitalLetters("fOo BAr") 

या भी, अगर आप एक्सटेंशन

extension String { 
    func capitalLetters() -> [Character] { 
     func isCapital(c: Character) -> Bool { 
      return ("A"..."Z").contains(c) 
     } 
     return filter(self, isCapital) 
    } 
} 

"fOo BAr".capitalLetters() 
+1

यदि आप वैश्विक 'फ़िल्टर' फ़ंक्शन का उपयोग करते हैं, तो आपको वास्तव में 'ऐरे' को पहले से बनाने की आवश्यकता नहीं है, और आप इसे थोड़ा और संक्षिप्त बनाने के लिए एक श्रेणी का उपयोग कर सकते हैं: 'फ़िल्टर (" एफओओ बीएआर ") { ("ए" ... "जेड")। ($ 0)} ' –

+0

@ माइकस अच्छा है, धन्यवाद! मैं अपना जवाब अपडेट करूंगा –

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