51 votes

Comment mettre la première lettre en majuscule dans un UILabel ?

Je développe une application iPhone. Dans une étiquette, je veux afficher la première lettre du nom d'un utilisateur en majuscule. Comment faire ?

103voto

beryllium Points 18138

S'il n'y a qu'un seul mot String, alors utilisez la méthode

-capitalisé

let capitalizedString = myStr.capitalized // capitalizes every word

Sinon, pour les chaînes de plusieurs mots, il faut extraire le premier caractère et ne mettre que ce caractère en majuscule.

63voto

josema.vitaminew Points 1666

(2014-07-24 : La réponse actuellement acceptée n'est pas correcte) La question est très spécifique : Mettre la première lettre en majuscule, laisser le reste en minuscule. L'utilisation de capitalizedString produit un résultat différent : "Capitalized String" au lieu de "Capitalized string". Il y a une autre variante qui dépend de la locale, qui est capitalizedStringWithLocale, mais ce n'est pas correct pour l'espagnol, pour le moment il utilise les mêmes règles qu'en anglais, donc c'est comme ça que je fais pour l'espagnol :

NSString *abc = @"this is test";

abc = [NSString stringWithFormat:@"%@%@",[[abc substringToIndex:1] uppercaseString],[abc substringFromIndex:1] ];       
NSLog(@"abc = %@",abc);

9voto

winterized Points 3076

Au cas où quelqu'un serait encore intéressé par l'année 2016, voici une liste de questions et réponses. Swift 3 extension :

extension String {
    func capitalizedFirst() -> String {
        let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)]
        let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex]
        return first.uppercased() + rest.lowercased()
    }

    func capitalizedFirst(with: Locale?) -> String {
        let first = self[self.startIndex ..< self.index(startIndex, offsetBy: 1)]
        let rest = self[self.index(startIndex, offsetBy: 1) ..< self.endIndex]
        return first.uppercased(with: with) + rest.lowercased(with: with)
    }
}

Ensuite, vous l'utilisez exactement comme vous le feriez pour les fonctions habituelles uppercased() ou capitalized() :

myString.capitalizedFirst() o myString.capitalizedFirst(with: Locale.current)

7voto

Yar Points 25421

C'est pour votre NSString+Util catégorie...

- (NSString *) capitalizedFirstLetter {
    NSString *retVal;
    if (self.length < 2) {
        retVal = self.capitalizedString;
    } else {
        retVal = string(@"%@%@",[[self substringToIndex:1] uppercaseString],[self substringFromIndex:1]);
    }
    return retVal;
}

Vous pouvez le faire avec NSString stringWithFormat bien sûr. J'utilise cette bizarrerie :

#define string(...) \
[NSString stringWithFormat:__VA_ARGS__]

7voto

Amr Lotfy Points 76

Tout simplement

- (NSString *)capitalizeFirstLetterOnlyOfString:(NSString *)string{
     NSMutableString *result = [string lowercaseString].mutableCopy;
     [result replaceCharactersInRange:NSMakeRange(0, 1) withString:[[result substringToIndex:1] capitalizedString]];

     return result;
}

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