2011-01-17 6 views
2

私は大きな文字列をhttp GETから戻ってきて、それに特定のスニペットがあるかどうかを判断しようとしています(私の罪は許してください)。NSRangeは、大きな文字列にスニペットが存在するかどうかを判断できますか?

私の質問はこれですこのテキストスニペットが存在するかどうかを判断するにはNSRangeを使用しますか?

NSRange textRange; 
    textRange =[[responseString lowercaseString] rangeOfString:[@"hat" lowercaseString]]; 

    if(textRange.location != NSNotFound) 
    { 
    //do something magical with this hat 
    } 

ありがとうございます!

答えて

10

あなたは場所がNSNotFoundであるかどうかを確認することができます:

NSRange textRange = [[responseString lowercaseString] rangeOfString:@"hat"]; 
if (textRange.location == NSNotFound) { 
    // "hat" is not in the string 
} 

を文字列が見つからない場合、rangeOfString:戻り{NSNotFound, 0}を。あなたはそれをたくさん使用する場合はNSString上のカテゴリにこれを束ねることができ

@interface NSString (Helper) 
- (BOOL)containsString:(NSString *)s; 
@end 

@implementation NSString (Helper) 

- (BOOL)containsString:(NSString *)s 
{ 
    return [self rangeOfString:s].location != NSNotFound; 
} 

@end 
1

のiOS 9.2、Xcodeの7.2を、ARCは、元の貢献のために

おかげで "mipadi" を有効に。私はその答えを精緻化して更新したかったのです。

なぜこのテクニックを使用しますか?さて、- (BOOL)containsString:(NSString *)strは、iOS 8.0以降でのみサポートされています。

本の私のお気に入りの使用:

if (yourString) 
{ 
    //Check to make yourString is not nil, otherwise NSInvalidArgumentException is raised. 

    if (!([yourString rangeOfString:@"stringToSearchFor"].location == NSNotFound)) 
    { 
     //The string "stringToSearchFor" was found in yourString, i.e. the result is NOT NSNotFound. 
    } 
    else 
    { 
     //The string "stringToSearchFor" was not found in yourString. 
    } 
} 
else 
{ 
    nil; 
} 

が、これは誰かに役立ちます願っています!乾杯。

関連する問題