2014-01-14 58 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是否爲該組的成員。

相關問題