2010-08-12 6 views
16

j'ai le texte dans une chaîne comme indiqué ci-dessousde Split une chaîne en chaînes différentes

011597464952,01521545545,454545474,454545444|Hello this is were the message is. 

Fondamentalement, je voudrais chacun des numéros dans différentes chaînes au message, par exemple

NSString *Number1 = 011597464952 
NSString *Number2 = 01521545545 
etc 
etc 
NSString *Message = Hello this is were the message is. 

i serait aiment avoir cette séparation d'une chaîne qui contient tout

Répondre

45

J'utiliser -[NSString componentsSeparatedByString]:

NSString *str = @"011597464952,01521545545,454545474,454545444|Hello this is were the message is."; 

NSArray *firstSplit = [str componentsSeparatedByString:@"|"]; 
NSAssert(firstSplit.count == 2, @"Oops! Parsed string had more than one |, no message or no numbers."); 
NSString *msg = [firstSplit lastObject]; 
NSArray *numbers = [[firstSplit objectAtIndex:0] componentsSepratedByString:@","]; 

// print out the numbers (as strings) 
for(NSString *currentNumberString in numbers) { 
    NSLog(@"Number: %@", currentNumberString); 
} 
0

est-ce que l'objectif-c ont strtok()?

La fonction strtok divise une chaîne en sous-chaînes en fonction d'un ensemble de délimiteurs. Chaque appel suivant donne la sous-chaîne suivante.

substr = strtok(original, ",|"); 
while (substr!=NULL) 
{ 
    output[i++]=substr; 
    substr=strtok(NULL, ",|") 
} 
+0

Non, mais C ne, et comme Objective-C est un surensemble stricte de C, Objective-C l'obtient gratuitement. – Allyn

+0

Pouvez-vous expliquer s'il vous plaît :) – user393273

+0

Je ne pense pas que cela fonctionnera sur l'objectif c – user393273

5

Regardez NSStringcomponentsSeparatedByString ou l'une des API similaires.

Si cela est un ensemble fixe connu des résultats, vous pouvez alors prendre le tableau résultant et l'utiliser quelque chose comme:

NSString *number1 = [array objectAtIndex:0];  
NSString *number2 = [array objectAtIndex:1]; 
... 

Si elle est variable, regardez les NSArray API et l'option objectEnumerator.

+0

ouais je l'ai trouvé plus tôt mais comment puis-je mettre chaque tableau dans une chaîne séparée? – user393273

+0

Ajout d'un peu plus de détails à la publication originale. – Eric

1
NSMutableArray *strings = [[@"011597464952,01521545545,454545474,454545444|Hello this is were the message is." componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@",|"]] mutableCopy]; 

NString *message = [[strings lastObject] copy]; 
[strings removeLastObject]; 

// strings now contains just the number strings 
// do what you need to do strings and message 

.... 

[strings release]; 
[message release]; 
0

Voici une fonction pratique que j'utilise:

///Return an ARRAY containing the exploded chunk of strings 
///@author: khayrattee 
///@uri: http://7php.com 
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter 
{ 
    return [stringToBeExploded componentsSeparatedByString: delimiter]; 
} 
Questions connexes