How to select uppercase letters from a Swift string?

I need uppercase letters from a string. With NSString it was like this:

 for (var i = 0; i<str.length; i++) { let c = str.characterAtIndex(i) if c >= 'A' && c < 'Z' { //.. } } 

In Swift, it starts as follows:

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

But I do not know how to select the i-th character, I check this

+5
source share
2 answers

For example, this work works fine in Swift:

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

And print

 H W 

Or you could do this:

 var range = "A"..."Z" for ch in st { if range.contains(String(ch)) { println(ch) } } 

Or the @Gabrielle solution has been updated to Swift 2.0 :

 func capitalLetters(s: String) -> [Character] { return s.characters.filter { ("A"..."Z").contains($0) } } capitalLetters("fOo BAr") // ["O", "B", "A"] 
+4
source

Here's a slightly more idiomatic version in quick

 func capitalLetters(s: String) -> [Character] { return filter(s) { ("A"..."Z").contains($0) } } capitalLetters("fOo BAr") // ["O", "B", "A"] 

or even:

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

and you can make the syntax more enjoyable by providing an extension

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

Source: https://habr.com/ru/post/1205406/


All Articles