2012-04-30 7 views
4

단어 또는 여러 단어를 찾아야합니다. 그러나이 방법을 사용하면 단어 한 장을 찾습니다. 나는 단어를 필요NSString에서 정확한 단어 검색

NSString *searchString = [NSString stringWithFormat:@"%@",searchField.text]; 
NSRange range = [textString rangeOfString : searchString]; 

    if (range.location != NSNotFound) { 


     NSLog(@"textString = %@", textString); 

    } 

는/단어

내가 어떻게 할 수있는

을 정확한?

감사합니다. 당신과 같이, 검색 문자열의 끝에 공백을 추가하면 어떻게됩니까

답변

3

이있는 NSString에서 하위 문자열을 찾는 구문 분석의 다양한 방법 /가 있습니다

  • 있는 NSString 자체
  • NSRegularExpression. 단어 주위의 공백을 둘러싼 시나리오를 다룰 수 있기 때문에 이것은 아마도 당신의 요구에 더 잘 맞을 것입니다. 따라서 cat을 검색 할 때 catapult에서 cat을 반환하지 않습니다.
  • NSScanner (당신이 필요를 위해 가장 가능성이 과잉)

... 그리고 그들은 물론, 각각 자신의 장점과 단점을 가지고있다.

NSString에는 "문자 및 하위 문자열 찾기"에서 9 개의 방법이 그룹화되어 있습니다.

-rangeOfString : 같은 방법
찾아 수신기 내의 주어진 스트링의 첫번째 발생의 범위를 리턴한다.

NSRegularExpression에는 "정규 표현식을 사용하여 문자열 검색"에서 5 개의 메소드가 그룹화되어 있습니다.

-numberOfMatchesInString : 옵션 : 범위 : 같은 방법
반환 문자열의 지정된 범위 내에서 정규 표현에 일치하는 수.

NSScanner에 대해서도 유용하지만이 클래스는 단순히 하위 부품을 찾는 것보다 문자열을 구문 분석하는 경우에 더 유용합니다.

2

:

NSString *searchString = [NSString stringWithFormat:@"%@ ",searchField.text]; 

searchField.text에서 문자열이 이미 공백으로 끝나는 경우, 당신은 그것을 제거해야합니다.

이것은 완벽한 해결책이 아닙니다. 예를 들어, 문장의 끝에있는 경우 검색 문자열을 찾을 수 없습니다. 대신 공백 문자를 추가하는 것이 아니라 히트 후 문자를보고 문자가 아닌지 확인하십시오. 이를 위해, 클래스 NSCharacterSet에서 살펴 :

NSCharacterSet * letters = [NSCharacterSet letterCharacterSet]; 
if (![letters characterIsMember:[textString characterAtIndex:(range.location+searchString.length)]]) { 
... 
}