목적 C의 string 형 배열에서 문자열 검색


87

객관적인 c의 문자열 배열에서 특정 문자열을 검색하고 싶습니다. 누군가가 이와 관련하여 나를 도울 수 있습니까?


당신의 숙제입니까? 쉽게 할 수 있다고 생각합니다. 반복하고 비교하는 이유는 무엇입니까?
vodkhang

나, 그것의 숙제가 아니고, 나는 아이폰에서 많은 자원을 소모하지 않는 특정 문자열을 검색하기 위해 최고의 알고리즘이 필요했습니다. 그래서 질문을했습니다
Filthy Knight

답변:


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

또는 그것이 어디에 있는지 알아야 할 경우

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

NSArray에 대한 문서 를 읽을 것을 강력히 권장합니다 . 질문을 게시하기 전에하는 것이 가장 좋습니다. :-)


NSArray * myArr = [[NSArray alloc] initWithObjects : @ "test1", @ "test3", @ "test3", nil]; "tes"를 검색하고 싶었습니다. 그러면 이해할 수없는 와일드 카드 스텁이 작동하고 싶었습니다. 그래서이 질문을했습니다. 답장을
Filthy Knight

각 값을 반복하고 테스트하거나 거의 SQL where 절만큼 강력한 컬렉션 개체에 대한 매우 포괄적 인 검색을 제공하는 NSPredicate를 살펴 봅니다. developer.apple.com/mac/library/documentation/cocoa/Conceptual/…
JeremyP

45

NSPredicate 클래스를 사용하여 문자열 배열에서 문자열을 검색 할 수 있습니다. 아래 샘플 코드를 참조하십시오.

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];

이것은 문자열 배열에서 문자열을 검색하는 가장 효율적인 방법입니다.


이 작은 배열을 위해 잘 작동하지만, u는 매우 큰 배열 (더 후 30K 레코드)이있는 경우 u는 어떤 생각 할 수 있습니다
아 미트 굽타

그런 다음 배열을 정렬 된 상태로 유지하고 새 요소를 찾고 삽입하기 위해 이진 검색 (bsearch)을 사용합니다. NSArray / NSMutableArray에는이를위한 메소드가 있습니다.
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];

이 코드는 질문에 대답 수 있지만이 대답 사이트의 미래 방문자에게 유용하다는 것을이 순서대로 질문에 대한 답 방법에 대한 설명을 포함하는 것이 좋습니다
RobV

이 코드는 단어 배열에서 단어를 찾는 데 잘 작동합니다.
Rahul K Rajan 2014

나는 초기 텍스트로 이것을하고 싶다. 검색 텍스트는 어디서부터 시작하지 않고 일치해야합니다. 도와주세요
Gautam Shrivastav
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.