2010-05-10 41 views
74

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

+0

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

+0

na, không phải 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 –

+0

bản sao có thể của [Objective-C Search NSArray for String?] (Http: // stackoverflow .com/questions/3588344/target-c-search-nsarray-for-string) – nielsbot

Trả lời

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

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

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

Tôi đề nghị bạn đọc documentation on NSArray. Tốt nhất bạn nên làm điều đó trước khi đăng câu hỏi của mình :-)

+0

cho phép nói rằng tôi có một mảng có chứa NSArray * myArr = [[NSArray alloc] initWithObjects: @ "test1", @ "test3", @ "test3", nil]; tôi muốn tìm kiếm "tes" cho phép nói sau đó tôi muốn một stuf thẻ hoang dã để làm việc, 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 bạn đã trả lời, đánh giá cao –

+0

Bạn lặp lại và kiểm tra từng giá trị, hoặc nhìn vào NSPredicate cung cấp tìm kiếm khá toàn diện cho các đối tượng thu thập - gần như là mạnh mẽ như SQL trong đó các mệnh đề. http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/Predicates/predicates.html#//apple_ref/doc/uid/TP40001789 – JeremyP

42

Bạn có thể sử dụng lớp NSPredicate để tìm kiếm chuỗi trong chuỗi các 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 các chuỗi

+0

hoạt động tốt cho mảng nhỏ nhưng nếu bạn có rất lớn mảng (nhiều hơn sau đó 30k hồ sơ) u có thể có bất kỳ ý tưởng –

+0

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

2
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]; 
+0

Trong khi đoạn mã này có thể trả lời câu hỏi thì tốt hơn nên đưa ra giải thích cách trả lời câu hỏi để câu trả lời này hữu ích cho khách truy cập trong tương lai của trang web – RobV

+0

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

Các vấn đề liên quan