2009-02-27 12 views
80

Recibí un nsstring del servidor. Ahora quiero dividirlo en la subcadena que necesito. ¿Cómo dividir la cadena?¿Cómo dividir cadenas en subcadenas en iOS?

Por ejemplo:

substring1: leer desde el segundo carácter a carácter quinto

substring2: leer 10 caracteres de la sexta carácter.

+1

Debe cambiar el iPhone a iOS. – Ricardo

Respuesta

207

También puede dividir una cadena por una subcadena, utilizando el método componentsSeparatedByString de NString.

Ejemplo de documentación:

NSString *list = @"Norman, Stanley, Fletcher"; 
NSArray *listItems = [list componentsSeparatedByString:@", "]; 
+0

¿Puedo dividir cadenas cuyas marcas separadas son diferentes? p.ej. @ "A, B^C ~ D" –

+6

Debería poder usar los "componentes SeparatedByCharactersInSet:" de NSString para dividir en varios caracteres. – codelogic

+0

¡Gran hombre de trabajo ..! gracias –

37

NSString tiene algunos métodos para esto:

[myString substringToIndex:index]; 
[myString substringFromIndex:index]; 
[myString substringWithRange:range]; 

revise la documentación de NSString para más información.

0

me escribió un pequeño método para dividir cadenas en una determinada cantidad de piezas. Tenga en cuenta que solo admite caracteres separadores individuales. Pero creo que es una manera eficiente de dividir un NSString.

//split string into given number of parts 
-(NSArray*)splitString:(NSString*)string withDelimiter:(NSString*)delimiter inParts:(int)parts{ 
    NSMutableArray* array = [NSMutableArray array]; 

    NSUInteger len = [string length]; 
    unichar buffer[len+1]; 

    //put separator in buffer 
    unichar separator[1]; 
    [delimiter getCharacters:separator range:NSMakeRange(0, 1)]; 

    [string getCharacters:buffer range:NSMakeRange(0, len)]; 

    int startPosition = 0; 
    int length = 0; 
    for(int i = 0; i < len; i++) { 

     //if array is parts-1 and the character was found add it to array 
     if (buffer[i]==separator[0] && array.count < parts-1) { 
      if (length>0) { 
       [array addObject:[string substringWithRange:NSMakeRange(startPosition, length)]]; 

      } 

      startPosition += length+1; 
      length = 0; 

      if (array.count >= parts-1) { 
       break; 
      } 

     }else{ 
      length++; 
     } 

    } 

    //add the last part of the string to the array 
    [array addObject:[string substringFromIndex:startPosition]]; 

    return array; 
} 
Cuestiones relacionadas