Mettre en majuscule ou changer la casse d'une NSString dans Objective-C

140

Je me demandais comment mettre en majuscule une chaîne trouvée dans un objet dans un fichier NSMutableArray.

An NSArraycontient la chaîne 'April'à l'index 2.
Je veux que cela soit changé en 'APRIL'.

Y a-t-il quelque chose de simple comme ça?

viewNoteDateMonth.text  = [[displayDate objectAtIndex:2] capitalized];
ça ne fait rien
la source

Réponses:

391

Et voilà:

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

Btw:
"april"is lowercase[NSString lowercaseString]
"APRIL" est UPPERCASE[NSString uppercaseString]
"April May" est Capitalized/Word Caps[NSString capitalizedString]
"April may" est Sentence caps(méthode manquante; voir la solution de contournement ci-dessous)

Par conséquent, ce que vous voulez est appelé " majuscule " et non " majuscule ". ;)

En ce qui concerne les «phrases majuscules», il faut garder à l'esprit que généralement «phrase» signifie «chaîne entière». Si vous souhaitez des phrases réelles, utilisez la deuxième méthode, ci-dessous, sinon la première:

@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
la source
1

Au cas où quelqu'un aurait besoin de ce qui précède rapidement:

SWIFT 3.0 et supérieur:

cela mettra en majuscule votre chaîne, mettez la première lettre en majuscule:

viewNoteDateMonth.text  = yourString.capitalized

cela mettra votre chaîne en majuscule, mettez toute la chaîne en majuscules:

viewNoteDateMonth.text  = yourString.uppercased()
MhmdRizk
la source