Tách chuỗi NSString nhiều lần trên cùng một dấu phân tách


76

Tôi hiện đang nhận được một chuỗi như thế này:

@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54"

Và tôi đang chia nó ra như thế này:

testArray = [[NSArray alloc] init];
NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
testArray = [testString componentsSeparatedByString:@","];

dict = [NSMutableDictionary dictionary];
for (NSString *s in testArray) {

    testArray2 = [s componentsSeparatedByString:@"|"];
    [dict setObject:[testArray2 objectAtIndex:1] forKey:[testArray2 objectAtIndex:0]];
}

Bây giờ tôi sẽ nhận được một chuỗi như thế này:

@"Sam|26|Developer,Hannah|22|Team Leader,Adam|30|Director,Carlie|32|PA,Jan|54|Cleaner"

Tôi có thể (và làm thế nào) sử dụng phương pháp tương tự như trên để tách chuỗi nhiều lần bằng cách sử dụng "|" dải phân cách?


5
Bằng cách nào đó, tôi nghi ngờ rằng hầu hết tất cả người xem và người ủng hộ cho câu hỏi này và câu trả lời của nó là những người chỉ đơn giản là tìm kiếm NSStringphương pháp 'phân tách', và tình cờ phát hiện ra câu trả lời ở đây.
Đánh dấu Amery

Dòng đầu tiên chỉ là tạo một NSArray mà bạn vứt bỏ ở dòng 3.
đóng hộp vào

Câu trả lời:


169

Dòng sau ...

testArray2 = [s componentsSeparatedByString:@"|"];

sẽ làm cho mảng bây giờ chứa 3 mục, thay vì 2 ..... không cần phải chia lại!


cảm ơn rất nhiều! chỉ cần tìm ra cách để tạo ra và hiển thị các UITableViewCell với 3 nhãn ...
Sam Parrish

Bạn có thể phân lớp UITableViewCell và thực hiện mọi thứ theo cách thủ công HOẶC bạn có thể sử dụng một trong các kiểu ô của chế độ xem bảng đã đặt trước và sử dụng chế độ xem nội dung để thêm nhãn phụ. Hướng dẫn táo chi tiết tất cả ....
Simon Lee


Kiểm tra các phần 'Tuỳ chỉnh tế bào' trong 'A gần nhìn xem bảng tế bào' phần
Simon Lee

Tôi đã tạo ô xem bảng tùy chỉnh và sử dụng cùng một mã, nhưng khi tôi định cấu hình ô, tôi phải đặt gì cho nhãn thứ ba?
Sam Parrish

5

làm như thế này.

NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
    NSArray *testArray = [testString componentsSeparatedByString:@","];
    NSLog(@"%@",testArray);
    for(int i=0;i<[testArray count];i++){
        NSString *str=[testArray objectAtIndex:i];
    NSArray *aa=[str componentsSeparatedByString:@"|"];
    NSLog(@"%@",aa);
    }

Không cần giữ lại mảng.


Tại sao tôi viết mã là Trong mã của anh ấy, anh ấy đã viết câu lệnh giữ lại. Không cần nó.
Tendulkar

1
không sử dụng initWithFormat nếu không sử dụng định dạng? chỉ: NSString * testString = @ "blahblah";
pfrank
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.