使用NSMutableAttributedString中的enumerateSubstringsInRange匹配多个单词

时间:2013-09-06 06:04:20

标签: objective-c

我正在尝试匹配下面的字符串但不幸的是它只给了我“nope”作为结果。有人可以帮忙吗?提前谢谢!

NSMutableAttributedString *text = [NSMutableString stringWithString:@"darn thing suddenly erupted without any warning.";
NSString *findMe = @"suddenly erupted";

[text enumerateSubstringsInRange:NSMakeRange(0, [text length]) options:NSStringEnumerationByWords usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

    if ([findMe isEqualToString:substring] ) {
        NSLog(@"found it");
    }
    else {
        NSLog(@"nope");
    }
   }];

2 个答案:

答案 0 :(得分:2)

您的方法只是枚举单独的单词。 “突然爆发”是两个字。

为什么不使用-rangeOfSubstring:来查找文本是否包含某些子字符串?例如:

NSLog(@"%@",[[text mutableString] rangeOfString:findMe].location == NSNotFound ? @"nope" : @"found it");

答案 1 :(得分:0)

enumerateSubstringsInRange有像

这样的选项
NSStringEnumerationByLines
NSStringEnumerationBySentences
NSStringEnumerationByParagraphs
NSStringEnumerationByComposedCharacterSequences
NSStringEnumerationByWords

如果你有比较的话意味着它会起作用

e.g

 NSString *text = @"darn thing suddenlyerupted without any warning.";
 NSString *findMe = @"suddenlyerupted";

所以你不能比较子字符串。您需要自定义块或移动到其他选项。