Capitalizar ou alterar maiúsculas e minúsculas de um NSString no Objective-C

140

Eu queria saber como capitalizar uma string encontrada em um objeto em um NSMutableArray.

Um NSArraycontém a sequência 'April'no índice 2.
Quero que isso seja alterado para 'APRIL'.

Existe algo simples assim?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
deixa pra lá
fonte

Respostas:

391

Aqui você vai:

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

Btw:
"april"is lowercase[NSString lowercaseString]
"APRIL" é UPPERCASE[NSString uppercaseString]
"April May" é Capitalized/Word Caps[NSString capitalizedString]
"April may" é Sentence caps(método ausente; veja a solução alternativa abaixo)

Portanto, o que você deseja é chamado " maiúsculo ", não " maiúsculo ". ;)

Quanto aos "Caps Caps", é preciso ter em mente que geralmente "Sentença" significa "string inteira". Se você deseja frases reais, use o segundo método, abaixo, caso contrário, o primeiro:

@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
fonte
1

Caso alguém precise do que foi dito rapidamente:

SWIFT 3.0 e superior:

isso vai capitalizar sua string, coloque a primeira letra em maiúscula:

viewNoteDateMonth.text  = yourString.capitalized

isso colocará em maiúsculas sua string, coloque todas as letras em maiúsculas:

viewNoteDateMonth.text  = yourString.uppercased()
MhmdRizk
fonte