我有两个清单和一个句子。我需要找出任何列表中的哪个字符串与句子中的单词匹配。到目前为止,我已经做到了这一点,方法是将句子分成单词数组,然后遍历每个列表并将元素与数组元素进行比较。我的代码虽然很笨拙。有没有更有效/更好的方法?这是在if语句中没有嵌套循环的代码。
List<string> browserList = new List<string>(new string[] { "Firefox", "Chrome", "Safari"});
List<string> mediaPlayerList = new List<string>(new string[] { "VLC", "WinAmp", "WMP" });
string sentence = "I use Firefox everyday";
if (browserList.Any(sentence.Contains))
{
// return the matching string (browser's name)
}
else if (mediaPlayerList.Any(sentence.Contains))
{
// return the matching string (media player's name)
}
严格来说,这完全符合您当前算法的要求(尊重匹配顺序并返回单个值):
var match = browserList.Where(sentence.Contains).FirstOrDefault() ??
mediaPlayerList.Where(sentence.Contains).FirstOrDefault();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句