Capitalizar o cambiar el caso de una NSString en Objective-C

140

Me preguntaba cómo capitalizar una cadena que se encuentra en un objeto en un NSMutableArray.

Un NSArraycontiene la cadena 'April'en el índice 2.
Quiero que esto se cambie a 'APRIL'.

¿Hay algo simple como esto?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
no importa
fuente

Respuestas:

391

Aqui tienes:

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

Por cierto:
"april"es lowercase[NSString minúsculaString]
"APRIL" es UPPERCASE[NSString uppercaseString]
"April May" es Capitalized/Word Caps[NSString capitalizedString]
"April may" es Sentence caps (falta el método; consulte la solución a continuación)

Por lo tanto, lo que quiere se llama " mayúsculas ", no " mayúsculas " ". ;)

En cuanto a "Caps Caps", hay que tener en cuenta que generalmente "Sentence" significa "cadena completa". Si desea oraciones reales, use el segundo método, a continuación, de lo contrario, el primero:

@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
Regexident
fuente
1

En caso de que alguien necesitara lo anterior rápidamente:

SWIFT 3.0 y superior:

esto capitalizará su cadena, haga la primera letra mayúscula:

viewNoteDateMonth.text  = yourString.capitalized

esto en mayúscula su cadena, haga que toda la cadena sea mayúscula:

viewNoteDateMonth.text  = yourString.uppercased()
MhmdRizk
fuente