如何检查String是否包含List / Array中的任何字符串

时间:2014-02-12 09:27:29

标签: c# .net linq list contains

我目前有一个ASP.Net网站。该网站从不同的来源检索RSS-Feeds并输出自己的RSS-Feed。但是文章中包含了一些必须“涂黑”的字样(正如你所说的那样)。这些单词包含在由该ASP.Net网站管理的blacklist中。

我目前的解决方案:

foreach (SyndicationItem rssItem in syndFeed.Items.OrderByDescending(x => x.PublishDate).ToList())
{
    //if is on blacklist
    bool isValid = true;
    foreach (String blacklistItem in MyBlacklist)
    {
        if(rssItem.Title.Text.contains(blacklistItem))
            isValid = false;
        if(rssItem.Summary.Text.contains(blacklistItem))
            isValid = false;
    }

    if (isValid)
    {
        writer.WriteStartElement("item");

        //Write Elements
        writer.WriteElementString("PubDate", rssItem.PublishDate.ToString("yyyy-MM-dd HH:mm:ss"));
        writer.WriteElementString("title", rssItem.Title.Text);
        writer.WriteElementString("description", rssItem.Summary.Text);
        writer.WriteElementString("link", rssItem.Id.ToString());

        writer.WriteEndElement();
    }
}

问题:是否有更高效的搜索方式?如何使用LINQ /任何其他String操作更简单地编写以下代码?

    foreach (String blacklistItem in MyBlacklist)
    {
        if(rssItem.Title.Text.contains(blacklistItem))
            isValid = false;
        if(rssItem.Summary.Text.contains(blacklistItem))
            isValid = false;
    }

基于Java的以下示例:

Checking if a string contains any of the strings in an array

How to check string with array of strings in java?

Test if a string contains any of the strings from an array

1 个答案:

答案 0 :(得分:3)

bool isValid = !myBlackList.Any(s=> rssItem.Title.Text.contains(s) || rssItem.Summary.Text.Contains(s))

或者

bool isValid = myBlackList.All(s=> !rssItem.Title.Text.Contains(s) && !rssItem.Summary.Text.Contains(s))