[英]Count number of matches from a list words in a string
我有一个词表
var words = List<string> { "Apple", "Banana", "Cherry" };'
和一个字符串
var fruitString = "Apple Orange Banana Plum";
我知道我是否愿意
var hasFruits = words.Contains(w => fruitString.Contains(w));
我可以判断字符串是否包含这些单词中的任何一个。 我需要做的是告诉您这些单词中有多少匹配。
我知道我能做
var count = 0;
foreach (var word in words)
{
if (fruitString.Contains(word))
{
count++;
}
}
但是有没有办法在Linq单缸纸上做到这一点?
如果要检查用空格分隔的字符串中出现的单词数 ,可以使用集合的交集:
fruitString.Split().Intersect(words).Count() // 2
如果要检查字符串中包含哪些单词,只需删除Count调用即可:
fruitString.Split().Intersect(words) // "Apple", "Banana"
注意1:如果您使用String.Contains
则在"Applejack"
字符串中将找到"Apple"
注意2:传递StringComparer.InvariantCultureIgnoreCase
作为Intersect
方法调用的第二个参数将忽略大小写字符串比较,“ apple”将匹配“ Apple”。
注意3:您可以使用Regex.Split
从字符串中获取单词,而单词之间不仅只有空格。 例如,类似"I look to the east and see: apple, orange and banana!"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.