假设我有一个噪音词列表......
string[] noise = new[] {"and", "it", "in"}; // etc, etc
...我有一个字符串s
。我想知道s
中存在多少个干扰词。
我知道可以通过在空格上分割s
,然后循环遍历结果数组来检查noise
中的匹配来实现这一点,但这似乎是一种非常低效的方法。感觉应该采用一种简洁的RegEx或Linq方式来实现它。
有什么建议吗?
答案 0 :(得分:4)
LINQ并不比循环更有效,但通常更具可读性和简洁性,我想这就是你想要的。在这种情况下,您可以使用Enumerable.Count
和Contains
:
int countNoiseWords = s.Split().Count(noise.Contains);
不区分大小写的方式:
int countNoiseWords = s.Split()
.Count(w => noise.Contains(w, StringComparer.InvariantCultureIgnoreCase));
如果noise
- 列表很长,您应该考虑使用HashSet<string>
而不是列表。