如何计算字符串中的干扰字数?

时间:2018-03-05 15:48:57

标签: c# regex linq

假设我有一个噪音词列表......

string[] noise = new[] {"and", "it", "in"}; // etc, etc

...我有一个字符串s。我想知道s中存在多少个干扰词。

我知道可以通过在空格上分割s,然后循环遍历结果数组来检查noise中的匹配来实现这一点,但这似乎是一种非常低效的方法。感觉应该采用一种简洁的RegEx或Linq方式来实现它。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

LINQ并不比循环更有效,但通常更具可读性和简洁性,我想这就是你想要的。在这种情况下,您可以使用Enumerable.CountContains

int countNoiseWords = s.Split().Count(noise.Contains);

不区分大小写的方式:

int countNoiseWords = s.Split()
    .Count(w => noise.Contains(w, StringComparer.InvariantCultureIgnoreCase));

如果noise - 列表很长,您应该考虑使用HashSet<string>而不是列表。