2009-02-27 9 views

Répondre

207

Vous pouvez également diviser une chaîne par une sous-chaîne à l'aide de la méthode componentsSeparatedByString de NString.

Exemple de documentation:

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

Puis-je séparer des chaînes dont les marques séparées sont différentes? par exemple. @ "A, B^C ~ D" –

+6

Vous devriez pouvoir utiliser "componentsSeparatedByCharactersInSet:" de NSString pour diviser sur plusieurs caractères. – codelogic

+0

Grand travail homme ..! merci –

37

NSString a quelques méthodes pour cela:

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

Consultez la documentation NSString pour plus d'informations.

0

J'ai écrit une petite méthode pour diviser les chaînes dans une certaine quantité de pièces. Notez qu'il ne prend en charge que les caractères séparateurs simples. Mais je pense que c'est un moyen efficace de diviser 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; 
} 
Questions connexes