【问题标题】:How to break down a string and exclude some words?如何分解字符串并排除某些单词?
【发布时间】:2014-01-14 23:35:42
【问题描述】:

我已经扩展了使用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]) {

    }
}

【问题讨论】:

    标签: ios nsstring


    【解决方案1】:

    问题在于您只是将notes 的单词与单个字符串(即@"in,it,It")进行比较。所以“i”会成功,“n”会成功,“n,i”会成功,以此类推。这根本不是你想要的。

    相反,将列入黑名单的单词分解为单个单词。将它们分成一个集合(NSSet),并查看notes 的每个单词是否是该集合的成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多