簡體   English   中英

計算字符串中列表詞的匹配數

[英]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單缸紙上做到這一點?

是的,只需將Contains換為Count

var count = words.Count(w => fruitString.Contains(w));

請注意,這保留了與原始代碼相同的結果-正如Sergey的答案所指出 ,根據您要實現的目標,這種方法可能是幼稚的。

如果要檢查用空格分隔的字符串中出現的單詞 ,可以使用集合的交集:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM