web-dev-qa-db-fra.com

Meilleure façon de diviser les chaînes dans un tableau

Je développe une application de voyage, je dois lire un fichier TXT contenant tous les états et pays, comme vous pouvez le remarquer, c'est un fichier assez énorme à lire, de toute façon, il s'agit d'un exemple du texte à l'intérieur du fichier:

Zakinthos (ZTH), Grèce
[.____] Zanesville (ZZV), USA
[.____] Zanjan (JWN), Iran
[.____] Zanzibar (Znz), Tanzanie
...

Maintenant, je lis le fichier sans problème, mais je ne sais pas comment créer deux tableaux, un avec l'état et un autre avec le pays afin que je puisse les montrer dans une table lorsque le texte est autocompressé.

J'ai essayé d'utiliser Nsscanner en utilisant le "", "comme un délimiteur, mais je ne sais pas comment faire de ces œuvres et que j'ai essayé avec des méthodes Nstring sans résultat.

Toute aide est accueillie, merci d'avance !!!.

btw désolé pour mon anglais xD

22
Rafael Jimeno

Le moyen le plus simple de diviser une nstring en Nsarray est le suivant:

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];

Cela devrait fonctionner pour vous. Avez-vous essayé cela?

72
hspain

Pour développer la réponse de HSPAIN, et pour amener la solution plus conforme à la question, je vous présente les éléments suivants

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];

cela vous donne un tableau de 2 éléments: [@ "Zakinthos (ZTH)", @ "Grèce"];

de là, vous pouvez facilement obtenir le pays.

NSString *countryString = stringArray[1]; // GREECE

et répéter le processus pour affiner davantage:

NSArray *stateArray = [(NSString*)stringArray[0] componentsSeparatedByString:@" "];

stateArray ressemble maintenant à ceci [@ "zakinthos", @ "(zième)"];

NSString *stateString = stateArray[0]; // Zakinthos

et maintenant, vous avez un pays et un État séparé dans leurs propres chaînes, que vous pouvez construire de nouveaux tableaux avec comme ceci:

NSMutableArray *countryArray = [NSMutableArray arrayWithObjects:countryString, nil];
NSMutableArray *stateArray = [NSMutableArray arrayWithObjects:stateString, nil];

Lorsque vous traitez votre document d'emplacement, vous pouvez ajouter plus de pays et d'états à leurs tableaux appropriés via quelque chose comme ce qui suit:

[countryArray addObject:newCountryString];
[stateArray addObject:newStateString];
10
Yup.