budidino budidino - 9 months ago 29
iOS Question

ObjC / iOS - Capitalize first letters of each word without modifying other letters

Is there an easy way to transform a string "dino mcCool" to a string "Dino McCool"?

using the '

' method I would just get
@"Dino Mccool"


You can enumerate the words of the string and modify each word separately. This works even if the words are separated by other characters than a space character:

NSString *str = @"dino mcCool. foo-bAR";
NSMutableString *result = [str mutableCopy];
[result enumerateSubstringsInRange:NSMakeRange(0, [result length])
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
        [result replaceCharactersInRange:NSMakeRange(substringRange.location, 1)
                              withString:[[substring substringToIndex:1] uppercaseString]];
NSLog(@"%@", result);
// Output: Dino McCool. Foo-BAR