检测NSString是否包含......?

Ale*_*lex 124 string objective-c nsstring

如何检测字符串是否包含某个单词?例如,我有一个字符串,其下面是:

@"Here is my string."
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以检测字符串中的单词,例如"is".

Jac*_*kin 192

我是这样做的:

NSString *someString = @"Here is my string";
NSRange isRange = [someString rangeOfString:@"is " options:NSCaseInsensitiveSearch];
if(isRange.location == 0) {
   //found it...
} else {
   NSRange isSpacedRange = [someString rangeOfString:@" is " options:NSCaseInsensitiveSearch];
   if(isSpacedRange.location != NSNotFound) {
      //found it...
   }
}
Run Code Online (Sandbox Code Playgroud)

您可以轻松地将其作为类别添加到NSString:

@interface NSString (JRStringAdditions) 

- (BOOL)containsString:(NSString *)string;
- (BOOL)containsString:(NSString *)string
               options:(NSStringCompareOptions)options;

@end

@implementation NSString (JRStringAdditions) 

- (BOOL)containsString:(NSString *)string
               options:(NSStringCompareOptions)options {
   NSRange rng = [self rangeOfString:string options:options];
   return rng.location != NSNotFound;
}

- (BOOL)containsString:(NSString *)string {
   return [self containsString:string options:0];
}

@end
Run Code Online (Sandbox Code Playgroud)

  • 实际上你可以在字符串的开头和结尾添加空格,"is"将匹配字符串以"is"开头 (2认同)

小智 89

使用以下代码扫描句子中的单词.

NSString *sentence = @"The quick brown fox";
NSString *word = @"quack";
if ([sentence rangeOfString:word].location != NSNotFound) {
    NSLog(@"Yes it does contain that word");
}
Run Code Online (Sandbox Code Playgroud)


sib*_*urb 22

在iOS8中,您现在可以使用:

BOOL containsString = [@"Here is my string." containsString:@"is"];
Run Code Online (Sandbox Code Playgroud)

有一篇关于如何在iOS7中"改装"它的有趣帖子:http://petersteinberger.com/blog/2014/retrofitting-containsstring-on-ios-7/

  • 它绝对不是私有API.查看NSString.h文件,你会看到它. (2认同)