Reputation: 138
Example of what I am trying to do:
let string = "This is my sentence"
I am looking to get this as a result: "TIMS"
I am struggling with swift and strings for some reason
class func getStringOfStartingLetter(str:String) -> String{
var firstCharacters: NSMutableString = NSMutableString()
let words: [AnyObject] = str.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
for word in words {
if word.length() > 0 {
let firstLetter: String = word.substringToIndex(1)
firstCharacters.appendString(firstLetter.uppercaseString)
}
}
return firstCharacters as String
}
Upvotes: 1
Views: 120
Reputation: 191
How about this:
let str = "This is my sentence"
var res = str.componentsSeparatedByString(" ").reduce("") {
if let character = $1.characters.first {
return $0 + String(character).uppercaseString
}
return $0
}
print(res)
Upvotes: 0
Reputation: 25459
Try this:
let str = "This is my sentence"
var strArr = str.componentsSeparatedByString(" ")
.map() {
$0.characters.first ?? " "
}.reduce("") {
initVal, obj in
"\(initVal)\(obj)"
}
print("Arr : \(strArr)")
You could do it even like that:
var a = "This is my sentence".characters.split(" ")
.map() {
$0.first! // Or thanks to @EricD use more safeties way: $0.first ?? " "
}
Upvotes: 2
Reputation: 61840
Nice extension for String
:
extension String {
func uppercasedFirstLetters() -> String {
let arrayOfWords = self.componentsSeparatedByString(" ")
let firstLetters: [String] = arrayOfWords.map {
if let character = $0.characters.first {
return String(character)
}
return ""
}
return firstLetters.joinWithSeparator("").uppercaseString
}
}
Usage:
let outputString = "This is my string".uppercasedFirstLetters() //TIMS
Upvotes: 1
Reputation: 138
for Objective-c i have
NSMutableString * firstCharacters = [NSMutableString string];
NSArray * words = [@"this is my sentence" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
for (NSString * word in words) {
if ([word length] > 0) {
NSString * firstLetter = [word substringToIndex:1];
[firstCharacters appendString:[firstLetter uppercaseString]];
}
}
Upvotes: 1