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