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 ?
Réponses
Trop de publicités?(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);
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)
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__]
- Réponses précédentes
- Plus de réponses