Tìm kiếm chuỗi trong mảng chuỗi trong mục tiêu c


87

Tôi muốn tìm kiếm một chuỗi cụ thể trong mảng các chuỗi trong mục tiêu c. Ai đó có thể giúp tôi về vấn đề này?


Nó là bài tập về nhà của bạn? Tôi nghĩ điều đó rất dễ thực hiện. Tại sao chỉ lặp lại và so sánh?
vodkhang

na, nó không phải là bài tập về nhà, tôi cần thuật toán tốt nhất để tìm kiếm một chuỗi cụ thể mà không tốn nhiều tài nguyên trong iphone, đó là lý do tại sao tôi đặt câu hỏi
Filthy Knight

Câu trả lời:


193
BOOL isTheObjectThere = [myArray containsObject: @"my string"];

hoặc nếu bạn cần biết nó ở đâu

NSUInteger indexOfTheObject = [myArray indexOfObject: @"my string"];

Tôi thực sự khuyên bạn nên đọc tài liệu về NSArray . Tốt nhất là làm điều đó trước khi đăng câu hỏi của bạn :-)


giả sử tôi có một mảng chứa NSArray * myArr = [[NSArray Distribution] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; Tôi muốn tìm kiếm "tes", giả sử sau đó tôi muốn một stuf thẻ hoang dã hoạt động, mà tôi không thể hiểu được, vì vậy tôi đặt câu hỏi này, nhưng cảm ơn vì đã trả lời, đánh giá cao
Filthy Knight

Bạn có thể lặp lại và kiểm tra từng giá trị hoặc xem xét NSPredicate cung cấp khả năng tìm kiếm khá toàn diện cho các đối tượng tập hợp - gần như mạnh mẽ như SQL where mệnh đề. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP

45

Bạn có thể sử dụng lớp NSPredicate để tìm kiếm chuỗi trong mảng chuỗi. Xem mã mẫu bên dưới.

NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Maruthi",@"Hyundai", @"Ford", @"Benz", @"BMW",@"Toyota",nil];

NSString *stringToSearch = @"i";

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@",stringToSearch]; // if you need case sensitive search avoid '[c]' in the predicate

NSArray *results = [cars filteredArrayUsingPredicate:predicate];

Đây là cách hiệu quả nhất để tìm kiếm chuỗi trong mảng chuỗi


điều này hoạt động tốt cho mảng nhỏ nhưng nếu bạn có mảng rất lớn (hơn 30k bản ghi) thì bạn có thể có bất kỳ ý tưởng nào không
amit gupta

Sau đó, giữ cho mảng được sắp xếp và sử dụng tìm kiếm nhị phân (bsearch) để định vị và chèn các phần tử mới. NSArray / NSMutableArray có các phương pháp cho điều đó.
spstanley

3
NSMutableArray *cars = [NSMutableArray arrayWithObjects:@"Max",@"Hai", @"Fine", @"Bow", @"Bomb",@"Toy",nil];

NSString *searchText = @"i";
 NSArray *results = [cars filteredArrayUsingPredicate:predicate];

// if you need case sensitive search avoid '[c]' in the predicate

 NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"title contains[c] %@",
                                searchText];


searchResults = [cars  filteredArrayUsingPredicate:resultPredicate];

Trong khi đoạn mã này có thể trả lời câu hỏi tốt hơn là bao gồm một lời giải thích của nó như thế nào trả lời câu hỏi theo thứ tự câu trả lời này rất hữu ích cho du khách trong tương lai của trang web
RobV

Đoạn mã này hoạt động tốt để tìm từ trong một mảng từ.
Rahul K Rajan

Tôi muốn làm điều này với văn bản đầu tiên. Ý tôi là văn bản tìm kiếm cần phải được so khớp từ bắt đầu chứ không phải từ bất kỳ đâu. Vui lòng giúp đỡ
Gautam Shrivastav
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.