Capitalize or change case of an NSString in Objective-C

匿名 (未验证) 提交于 2019-12-03 01:29:01

问题:

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];

回答1:

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


回答2:

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] uppercaseString];

Documentation: http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/uppercaseString

You can also use lowercaseString and capitalizedString



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!