How do I check if a string contains another string

2018-12-31 17:14发布

问题:

How can I check if a string (NSString) contains another smaller string?

I was hoping for something like:

NSString *string = @\"hello bla bla\";
NSLog(@\"%d\",[string containsSubstring:@\"hello\"]);

But the closest I could find was:

if ([string rangeOfString:@\"hello\"] == 0) {
    NSLog(@\"sub string doesnt exist\");
} 
else {
    NSLog(@\"exists\");
}

Anyway, is that the best way to find if a string contains another string?

回答1:

NSString *string = @\"hello bla bla\";
if ([string rangeOfString:@\"bla\"].location == NSNotFound) {
  NSLog(@\"string does not contain bla\");
} else {
  NSLog(@\"string contains bla!\");
}

The key is noticing that rangeOfString: returns an NSRange struct, and the documentation says that it returns the struct {NSNotFound, 0} if the \"haystack\" does not contain the \"needle\".


And if you\'re on iOS 8 or OS X Yosemite, you can now do: (*NOTE: This WILL crash your app if this code is called on an iOS7 device).

NSString *string = @\"hello bla blah\";
if ([string containsString:@\"bla\"]) {
  NSLog(@\"string contains bla!\");
} else {
  NSLog(@\"string does not contain bla\");
}