【发布时间】:2012-02-03 00:26:30
【问题描述】:
我正在为产品销售网站编写自己的特定网络爬虫。由于它们非常糟糕的编码性质,我得到了指向同一页面的 url。
示例一
http://www.hizlial.com/bilgisayar/bilgisayar-bilesenleri/bilgisayar/yazicilar/samsung-scx-3200-tarayici-fotokopi-lazer-yazici_30.033.1271.0043.htm
比如上面的页面和下面的一样
http://www.hizlial.com/bilgisayar-bilesenleri/bilgisayar/yazicilar/samsung-scx-3200-tarayici-fotokopi-lazer-yazici_30.033.1271.0043.htm
如您所见,当您通过'/' 字符拆分时,它包含 2 个“bilgisayar”元素
所以我想要的是像这样拆分网址
string[] lstSPlit = srURL.Split('/');
然后检查该列表是否多次包含相同的元素。任何元素。如果包含任何元素,我将跳过 url,因为我已经从其他页面提取了真实的 url。那么最好的方法是什么?
更长但有效的版本
string[] lstSPlit = srHref.Split('/');
bool blDoNotAdd = false;
HashSet<string> splitHashSet=new HashSet<string>();
foreach (var vrLstValue in lstSPlit)
{
if (vrLstValue.Length > 1)
{
if (splitHashSet.Contains(vrLstValue) == false)
{
splitHashSet.Add(vrLstValue);
}
else
{
blDoNotAdd = true;
break;
}
}
}
【问题讨论】:
-
所以您想检查
lstSPlit是否多次包含同一个项目?或者您想检查它是否包含您在之前的运行中看到的项目? -
同一项目不止一次。它可以是它拥有的任何项目
标签: c# wpf list element contains