Capitalizzare o modificare il caso di una stringa NSS in Objective-C


140

Mi chiedevo come scrivere in maiuscolo una stringa trovata in un oggetto in un NSMutableArray.

An NSArraycontiene la stringa 'April'all'indice 2.
Voglio che questo sia cambiato 'APRIL'.

C'è qualcosa di semplice come questo?

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

Risposte:


391

Ecco qui:

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

Btw:
"april"è lowercase[NSString lowercaseString]
"APRIL" è UPPERCASE[NSString uppercaseString]
"April May" è Capitalized/Word Caps[NSString capitalizedString]
"April may" è Sentence caps(metodo mancante; vedi soluzione alternativa sotto)

Quindi ciò che vuoi è chiamato " maiuscolo ", non " maiuscolo ". ;)

Per quanto riguarda "Frasi maiuscole" bisogna tenere presente che di solito "Frase" significa "intera stringa". Se desideri frasi vere, usa il secondo metodo, di seguito, altrimenti il ​​primo:

@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


1

Nel caso qualcuno avesse bisogno di quanto sopra in breve tempo:

SWIFT 3.0 e versioni successive:

questo renderà maiuscola la tua stringa, renderà maiuscola la prima lettera:

viewNoteDateMonth.text  = yourString.capitalized

questo renderà maiuscole le stringhe, rendendole tutte maiuscole:

viewNoteDateMonth.text  = yourString.uppercased()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.