2009-02-27 27 views

Trả lời

207

Bạn cũng có thể chia chuỗi bằng chuỗi con, sử dụng phương pháp componentsSeparatedByString của NString.

Ví dụ từ tài liệu:

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

Tôi có thể tách các chuỗi có các dấu riêng biệt khác nhau không? ví dụ. @ "A, B^C ~ D" –

+6

Bạn sẽ có thể sử dụng "componentsSeparatedByCharactersInSet:" của NSString để chia thành nhiều ký tự. – codelogic

+0

Great Work man ..! cảm ơn –

37

NSString có một vài phương pháp cho việc này:

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

Kiểm tra các tài liệu cho NSString để biết thêm thông tin.

0

Tôi đã viết một phương pháp ít để chia chuỗi trong một số lượng nhất định của các bộ phận. Lưu ý rằng nó chỉ hỗ trợ các ký tự phân tách đơn. Nhưng tôi nghĩ rằng đó là một cách hiệu quả để tách một 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; 
} 
Các vấn đề liên quan