I was wondering how to capitalize a string found in an object in an NSMutableArray
.
An NSArray
contains the string 'April'
at index 2.
I want this to be changed to 'APRIL'
.
Is there something simple like this?
viewNoteDateMonth.text = [[displayDate objectAtIndex:2] capitalized];
Here ya go:
viewNoteDateMonth.text = [[displayDate objectAtIndex:2] uppercaseString];
Btw:
"april"
is lowercase
[NSString lowercaseString]
"APRIL"
is UPPERCASE
[NSString uppercaseString]
"April May"
is Capitalized/Word Caps
[NSString capitalizedString]
"April may"
is Sentence caps
(method missing; see workaround below)
Hence what you want is called "uppercase", not "capitalized". ;)
As for "Sentence Caps" one has to keep in mind that usually "Sentence" means "entire string". If you wish for real sentences use the second method, below, otherwise the first:
@interface NSString () - (NSString *)sentenceCapitalizedString; // sentence == entire string - (NSString *)realSentenceCapitalizedString; // sentence == real sentences @end @implementation NSString - (NSString *)sentenceCapitalizedString { if (![self length]) { return [NSString string]; } NSString *uppercase = [[self substringToIndex:1] uppercaseString]; NSString *lowercase = [[self substringFromIndex:1] lowercaseString]; return [uppercase stringByAppendingString:lowercase]; } - (NSString *)realSentenceCapitalizedString { __block NSMutableString *mutableSelf = [NSMutableString stringWithString:self]; [self enumerateSubstringsInRange:NSMakeRange(0, [self length]) options:NSStringEnumerationBySentences usingBlock:^(NSString *sentence, NSRange sentenceRange, NSRange enclosingRange, BOOL *stop) { [mutableSelf replaceCharactersInRange:sentenceRange withString:[sentence sentenceCapitalizedString]]; }]; return [NSString stringWithString:mutableSelf]; // or just return mutableSelf. } @end