Làm cách nào để chia chuỗi thành chuỗi con trên iOS?


83

Tôi đã nhận được một NSStringtừ máy chủ. Bây giờ tôi muốn chia nó thành chuỗi con mà tôi cần. Làm thế nào để tách chuỗi?

Ví dụ:

Subring1: đọc từ ký tự thứ hai đến ký tự thứ 5

substring2: đọc 10 ký tự từ ký tự thứ 6.


1
Bạn nên đổi iPhone sang iOS.
Ricardo

Câu trả lời:


223

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

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

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

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

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

xin chào, tôi đã tách thành công chuỗi nhưng tôi muốn đặt nó được phân tách trong UILabel bất kỳ ý tưởng nào?
Nikunj Jadav

Lặp lại qua mảng của bạn: for (int i = 0; i <[listItems count]; i ++) và sử dụng [listItems objectAtIndex: i];
Domness

Cảm ơn! tôi làm một chút khác nhau: `NSArray * listitems = [danh sách componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];`
innuendoreplay

39

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

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

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


1

Tôi đã viết một phương pháp nhỏ để chia các chuỗi thành một số phần cụ thể. 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 chuỗi 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;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.