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

问题描述 投票:-1回答:1

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

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

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

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

有什么建议?

c# regex linq
1个回答
4
投票

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

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

不区分大小写的方式:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.