Janak LN
Janak LN

Reputation: 138

String that contains first letters of words in another String

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

Answers (4)

TekMi
TekMi

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

Greg
Greg

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

Bartłomiej Semańczyk
Bartłomiej Semańczyk

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

Janak LN
Janak LN

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

Related Questions