2010-07-15 7 views

Répondre

31

solution Naïf:

NSMutableString * firstCharacters = [NSMutableString string]; 
NSArray * words = [@"this is my sentence" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
for (NSString * word in words) { 
    if ([word length] > 0) { 
    NSString * firstLetter = [word substringToIndex:1]; 
    [firstCharacters appendString:[firstLetter uppercaseString]]; 
    } 
} 

Notez que c'est un peu stupide de casser des mots (juste en passant par des espaces, ce qui est pas toujours la meilleure approche), et il ne gère pas les caractères UTF16 +.

Si vous devez gérer UTF16 + caractères, modifiez l'instruction if() dans la boucle:

if ([word length] > 0) { 
    NSString * firstLetter = [word substringWithRange:[word rangeOfComposedCharacterSequenceAtIndex:0]]; 
    [firstCharacters appendString:[firstLetter uppercaseString]]; 
} 
+0

comment utiliser ceci rapide? –

1

Vous pouvez toujours utiliser la méthode cStringUsingEncoding: et juste itérer le const char *. Ou mieux, vous pouvez utiliser la méthode getCharacters:

Lorsque vous itérez, il vous suffit de faire une boucle for et de vérifier si le caractère précédent est le caractère '' et l'ajouter à votre variable temporaire. Si vous le souhaitez en majuscule, utilisez simplement la chaîne majuscule à la fin.

voir doc Apple pour plus d'informations: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/getCharacters:range:

je lutte aussi avec des cordes parfois, les noms de fonction ne sont pas vraiment semblables à d'autres langues comme C++/java par exemple.

Questions connexes