2009-02-27 32 views

答えて

207

NStringのcomponentsSeparatedByStringメソッドを使用して、文字列を部分文字列で分割することもできます。ドキュメントから

例:

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

別々のマークが異なる文字列を分割することはできますか?例えば@ "A、B^C〜D" –

+6

NSStringの "componentsSeparatedByCharactersInSet:"を使って、複数の文字に分割することができます。 – codelogic

+0

偉大な仕事の男..!ありがとう –

37

NSStringのは、このためのいくつかの方法があります。

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

の詳細については、NSStringのためのマニュアルを参照してください。

0

私は部品の指定された量で文字列を分割するために少し方法を書きました。 単一の区切り文字しかサポートしていないことに注意してください。しかし、私はそれが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; 
} 
関連する問題