2010-10-15 10 views
8

Dans Xcode, si j'ai un NSString contenant un nombre, c.-à-d. @ "12345", comment le diviser en un tableau représentant des composants, par exemple "1", "2", "3", "4" 5" ... Il y a un componentsSeparatedByString sur l'objet NSString, mais dans ce cas il n'y a pas delimiter ...Comment diviser NSString en composants?

Répondre

4

Il peut sembler characterAtIndex: ferait l'affaire, mais qui retourne une unichar, qui n'est pas Type de données dérivé de NSObject et ne peut donc pas être placé directement dans un tableau. Vous auriez besoin de construire une nouvelle chaîne avec chaque unichar.

Une solution plus simple consiste à utiliser substringWithRange: avec des plages de 1 caractère. Exécutez votre chaîne à travers une simple boucle for (int i=0;i<[myString length];i++) pour ajouter chaque plage de 1 caractères à NSMutableArray.

+0

Cela a fonctionné à merveille, merci beaucoup pour la réponse rapide :-) –

1

Un NSString déjà est un tableau de ses composants, si par composants vous voulez dire des caractères uniques. Utilisez [string length] pour obtenir la longueur de la chaîne et [string characterAtIndex:] pour obtenir les caractères.

Si vous avez vraiment besoin d'un tableau d'objets chaîne avec un seul caractère, vous devrez créer ce tableau vous-même. En boucle sur les caractères de la chaîne avec une boucle for, créez une nouvelle chaîne avec un seul caractère en utilisant [NSString stringWithFormat:] et ajoutez-la à votre tableau. Mais ce n'est généralement pas nécessaire.

0

Je ne sais pas si cela fonctionne pour ce que vous voulez faire, mais:

const char *foo = [myString UTF8String] 
char third_character = foo[2]; 

Assurez-vous de lire la documentation sur UTF8String

1

Dans votre cas, puisque vous n'avez pas delimiter, vous avez pour obtenir les caractères séparés par

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange 

ou celui

- (unichar)characterAtIndex:(NSUInteger) index inside a loop. 

C'est la seule façon que je vois, pour le moment.

24

Il y a une fonction de membre de prêt NSString pour le faire:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd"; 
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"];