2014-01-14 59 views
1

我已经扩展了用It设置的黑名单词,以发现一些单元测试现在失败。如何分解一个字符串并排除一些单词?

我没有注意到I现在也被排除在外,因为它匹配It,这不是我的意图。

notes = @"I was out with Jenny for dinner. It was raining all night."; 

NSString * const BLACKLISTEDWORDS = @"in,it,It"; 

NSArray *words = [notes componentsSeparatedByString:@" "]; 
for (NSString *word in words) { 
    if([BLACKLISTEDWORDS rangeOfString:word].location == NSNotFound]) { 

    } 
} 

有没有更好的方法来创建黑名单方法?

解决方案: 马特解决方案工作正常。捕捉到它的代码,此解决方案:

NSSet *blackList = [NSSet setWithArray:[BLACKLISTEDWORDS componentsSeparatedByString:@","]]; 
for (NSString *word in words) { 
    if (![blackList containsObject:word]) { 

    } 
} 

回答

1

的问题是,你只是比较notes的叫板一个字符串,即@"in,it,It"。所以“我”会成功,“n”会成功,“我,我”会成功,等等。这完全不是你想要的。

取而代之的是将黑名单中的单词分解成单个单词。将它们分成一组(NSSet),然后查看每个字notes是否为该组的成员。

相关问题