2010-08-12 5 views
16

ich den Text in einer Zeichenkette haben, wie untenSplit eine Saite in verschiedenen Saiten

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

Grundsätzlich gezeigt i jede der Zahlen in verschiedenen Saiten auf die Nachricht zB

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

möchte würde ich mag es sein, dass es sich von einer Zeichenkette trennt, die alles enthält

Antwort

45

Ich würde verwenden -[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

hat objective-c strtok()?

Die Strtok-Funktion teilt eine Zeichenfolge in Teilstrings basierend auf einer Reihe von Trennzeichen. Jeder nachfolgende Aufruf gibt den nächsten Teilstring.

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

Nein, aber C der Fall ist, und da Objective-C eine strenge Obermenge von C ist, Objective-C bekommt es kostenlos. – Allyn

+0

Kannst du bitte erklären :) – user393273

+0

ich glaube nicht, dass dies auf objektiven c funktioniert – user393273

5

Look at NSStringcomponentsSeparatedByString oder eine der APIs ähnlichen.

Wenn dies ein bekannter fester Satz von Ergebnissen ist, können Sie das resultierende Array dann nehmen und verwenden Sie es so etwas wie:

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

Wenn es variabel ist, sehen Sie sich die NSArray APIs und der objectEnumerator Option.

+0

Ja, ich habe das früher gefunden, aber wie setze ich jedes Array in eine separate Zeichenfolge? – user393273

+0

Dem ursprünglichen Post ein wenig mehr Details hinzugefügt. – 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

Hier ist eine praktische Funktion, die ich verwenden:

///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]; 
} 
Verwandte Themen