13

我需要以这种方式匹配我的字符串:*myString* 其中*意味着任何子字符串。我应该使用哪种方法?

你能帮我吗?

4

3 回答 3

25

如果它适用于 iPhone OS 3.2 或更高版本,请使用 NSRegularExpressionSearch。

NSString *regEx = [NSString stringWithFormat:@".*%@.*", yourSearchString];
NSRange range = [stringToSearch rangeOfString:regEx options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {

}
于 2010-12-21T00:16:03.863 回答
11

您不能使用 *(通配符)进行实际搜索,但通常可以执行等效的操作:

相当于搜索theTerm*

if ([theString hasPrefix:@"theTerm"]) {

相当于搜索*theTerm

if ([theString hasSuffix:@"theTerm"]) {

或者,使用NSString下面显示的类别,以下相当于搜索*theTerm*

if ([theString containsString:@"theTerm"]) {

类别只是我们添加到类中的一种新方法(如函数)。我写了以下一个,因为通常认为一个字符串包含另一个字符串而不是处理NSRanges 对我来说更有意义。

// category on NSString
@interface NSString (MDSearchAdditions)
- (BOOL)containsString:(NSString *)aString;
@end

@implementation NSString (MDSearchAdditions)

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

@end
于 2010-12-21T00:06:23.690 回答
0

如果您需要更高级的东西,请尝试https://github.com/dblock/objc-ngram

于 2014-02-27T17:36:24.667 回答