2014-12-02 3 views
0

NSString에 하위 문자열이 있는지 확인하려고합니다. 그러나 문자열의 단어 사이에 공백이 없으므로 작동하지 않습니다. 예 : 나는 '안녕하세요'이 문자열에 존재하는지 확인해야합니다 "test.hello"NSString containsString - 공백없이

NSString containsString @

를 찾을 수 없습니다. 다른 솔루션?

+0

애플이 '[@ "test.hello"containsString : @ "hello"]'는'YES '를 리턴해야합니다. –

+0

@HotLicks 나는 그렇게 생각했다. 그러나 그것은 나를 위해 일하지 않고 있었다. 나는 작동하는 대답을 받아 들였다. –

답변

0

iOS 8에는 새로운 메소드 localizedCaseInsensitiveContainsString이 있습니다. 또한 containsString :에 추가됩니다.

NSString *testString = @"test.hello"; 
BOOL found = [testString localizedCaseInsensitiveContainsString:@"Hello"]; 
NSLog(@"%@", found ? @"Yes":@"No"); // prints Yes 
+0

감사합니다. 그것은 문제의 일부일뿐입니다. 문자열의 일부를 검색하는 containsString 메서드로 문자열을 구성 요소로 분리해야했습니다. 문자열 내에서 문자열을 선택하지 않습니다 (예 : 'aaabooaaa'에서 'boo'를 가져올 수 없음). –

+0

@ kmcgrady,이 메소드는 당신이 준 예제에 대해 'aaabooaaa'를 찾아서 BOO를 찾는다. 그 일을하지 않을 것이라고 말하고 있습니까? – rdelmar

+0

죄송합니다. 작동하지 않을 것이라고 생각했지만 방금 테스트 한 결과입니다. 내 솔루션보다 훨씬 컴팩트합니다. 감사! –

0

업데이트

이 훨씬 더 컴팩트 @ rdelmar의 대답을 제외한 작동합니다.

///////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

내가 다른 곳에서 answer을 발견했습니다. 기본적으로 NSRange를 사용하고 다음 방법을 통해 확인해야했습니다.

[string rangeOfString:@"hello" options:NSCaseInsensitiveSearch].location != NSNotFound 

또한 확인하기 전에 문자열을 분할해야했습니다. 따라서 예제 단어는 마침표로 구분됩니다. 나는 전화 :

NSArray *myArray = [string componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]]; 

과는 rangeOfString 검색을 수행 문자열의 배열을 통해 루프. BOOL을 설정하여 일단 'hello'문자열이 발견되면 검색을 중지했습니다.