목적 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.