2009-02-27 13 views
80

Ho ricevuto una nsstring dal server. Ora voglio dividerlo nella sottostringa di cui ho bisogno. Come dividere la stringa?Come suddividere la stringa in sottostringhe su iOS?

Ad esempio:

substring1: leggere dal secondo carattere al 5 carattere

substring2: leggere 10 caratteri dal 6 ° carattere.

+1

È necessario cambiare iPhone in iOS. – Ricardo

risposta

207

È anche possibile dividere una stringa da una sottostringa, utilizzando il metodo componentsSeparatedByString di NString.

Esempio da documentazione:

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

Posso dividere stringhe con marchi separati? per esempio. @ "A, B^C ~ D" –

+6

Dovresti essere in grado di utilizzare "componentsSeparatedByCharactersInSet" di NSString per suddividere su più caratteri. – codelogic

+0

Ottimo lavoro uomo ..! grazie –

37

NSString ha alcuni metodi per questo:

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

Controllare la documentazione per NSString per ulteriori informazioni.

0

ho scritto un po 'di metodo per dividere le stringhe in una determinata quantità di pezzi. Si noti che supporta solo caratteri separatori singoli. Ma penso che sia un modo efficace per dividere una 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; 
} 
Problemi correlati