2014-02-12 125 views
2

我目前有一个ASP.Net网站。该网站从不同来源检索RSS源,并输出其自己的RSS-Feed。但是这篇文章包含了一些他们必须被“黑掉”的词(正如你可能会说的那样)。这些词包含在该ASP.Net网站管理的blacklist中。如何检查字符串是否包含List/Array中的任何字符串

我目前的解决方案:

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 /任何其他Stringoperations更简单地编写下面的代码?基于从Java下面的例子

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

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

回答

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)) 
+0

天啊!我怎么会错过这个?你的解决方案就像一个魅力!谢谢您的帮助! – User999999

相关问题