Is there an easy way to transform a string "dino mcCool" to a string "Dino McCool"?
using the 'capitalizedString
' 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])
options:NSStringEnumerationByWords
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
Try this
- (NSString *)capitilizeEachWord:(NSString *)sentence {
NSArray *words = [sentence componentsSeparatedByString:@" "];
NSMutableArray *newWords = [NSMutableArray array];
for (NSString *word in words) {
if (word.length > 0) {
NSString *capitilizedWord = [[[word substringToIndex:1] uppercaseString] stringByAppendingString:[word substringFromIndex:1]];
[newWords addObject:capitilizedWord];
}
}
return [newWords componentsJoinedByString:@" "];
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With