142 votes

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

Je me demandais comment mettre en majuscule une chaîne de caractères trouvée dans un objet dans une NSMutableArray .

Un site NSArray contient la chaîne de caractères 'April' à l'indice 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];

394voto

Regexident Points 17722

Voilà :

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

Au fait :
"april" est 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)

Ce que vous voulez est donc appelé " majuscule ", et non " capitalisé ". ;)

En ce qui concerne les "majuscules de phrases", il faut garder à l'esprit qu'en général, "phrase" signifie "chaîne entière". Si vous souhaitez de vraies phrases, 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

20voto

theChrisKent Points 10963

1voto

MhmdRizk Points 390

Au cas où quelqu'un aurait besoin de ce qui précède en un clin d'œil :

SWIFT 3.0 et plus :

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

viewNoteDateMonth.text  = yourString.capitalized

ceci va mettre votre chaîne en majuscule, rendre toutes les chaînes en majuscules :

viewNoteDateMonth.text  = yourString.uppercased()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X