2010-08-12 24 views
16

tengo el texto en una cadena como se muestra a continuacióndividir una cadena en diferentes cadenas

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

Básicamente me gustaría que cada uno de los números en diferentes cadenas al mensaje, por ejemplo

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

lo haría gustaría tener esa división de una cadena que lo contiene todo

Respuesta

45

me gustaría utilizar -[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

tiene objetivo-c tiene strtok()?

La función strtok divide una cadena en subcadenas en función de un conjunto de delimitadores. Cada llamada subsiguiente da la siguiente subcadena.

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

No, pero C hace, y desde Objective-C es un superconjunto estricto de C, Objective-C lo consigue gratis. – Allyn

+0

¿Puede explicar por favor :) – user393273

+0

no creo que esto va a funcionar en el objetivo c – user393273

5

Mira NSStringcomponentsSeparatedByString o una de las APIs similares.

Si esto es un conjunto fijo conocido de los resultados, a continuación, puede tomar la matriz resultante y lo usa algo como:

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

Si es variable, mira a los NSArray API y la opción objectEnumerator.

+0

Sí, lo encontré antes, pero ¿cómo pongo cada matriz en una cadena separada? – user393273

+0

Se agregó un poco más de detalle a la publicación original. – 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

Aquí es una función muy útil que utilizo:

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