68 votes

Comment obtenir un seul caractère NSString à partir d'un NSString ?

Je veux récupérer un caractère à l'intérieur d'une NSString. Je veux que le résultat soit une NSString.

Voici le code que j'utilise pour obtenir un seul caractère à l'index it :

[[s substringToIndex:i] substringToIndex:1]

Y a-t-il une meilleure façon de procéder ?

132voto

Kris Markel Points 8724

Cela permettra également de récupérer un caractère à l'indice i en tant que NSString, et vous n'utilisez qu'une structure NSRange plutôt qu'une NSString supplémentaire.

NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];

38voto

joshualmf Points 107

Si vous voulez seulement obtenir un caractère d'une NSString, vous pouvez essayer ceci.

- (unichar)characterAtIndex:(NSUInteger)index;

Utilisé comme tel :

NSString *originalString = @"hello";
int index = 2;
NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]];
//returns "e".

23voto

Votre suggestion ne fonctionne que pour les caractères simples comme l'ASCII. Les NSStrings stockent l'unicode et si votre caractère est long de plusieurs unichars, vous pourriez vous retrouver avec du charabia. Utilisez

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

si vous voulez déterminer le nombre d'unichars de votre personnage. Je l'utilise pour parcourir mes chaînes de caractères et déterminer où se trouvent les limites des caractères.

La compatibilité totale avec l'unicode représente un peu de travail, mais cela dépend des langues que vous utilisez. Je vois beaucoup de textes asiatiques et la plupart des caractères débordent d'un espace, c'est donc un travail que je dois faire.

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