for (int i = 0; i < ExtractLinks.FilteredLinks.Count; i++)
{
for (int x = 0; x < lockedLinks.Count; x++)
{
if (ExtractLinks.FilteredLinks[i].Contains(lockedLinks[x]))
{
string h = "found";
}
}
}
我想检查两个列表中是否存在相同的链接。 FilteredLinks和lockedLinks都输入List
我使用了断点,在FilteredLink中我看到了这个链接,例如:
http://rotter.net/forum/scoops1/112341.shtml
在lockedLinks中这个链接:
http://rotter.net/cgi-bin/forum/dcboard.cgi?az=read_count&om=112341&forum=scoops1
两个链接都指向同一页面。所以这意味着两者都是一样的。 所以在这种情况下它应该在我添加的断点处停止:string h =&#34; found&#34 ;; 但是因为它永远不会停在那里我想我的IF条件有问题。
如果发现我想要从FilteredLinks中删除链接,也要从lockedLinks中删除链接以从两个列表中删除相同的链接。链接在地址上不相同,但是它们通向同一页面,所以我认为它们是相同/相同的,并且它们都应该被删除。
答案 0 :(得分:1)
如果你知道uri格式,那么你可以从不同的uri类型中提取id并比较它们:
private static string GetArticleIdFiltered(string filtered)
{
var uri = new Uri(filtered);
return Path.GetFileNameWithoutExtension(uri.LocalPath);
}
private static string GetArticleIdLocked(string locked)
{
var uri = new Uri(locked);
var queryParams = HttpUtility.ParseQueryString(uri.Query);
return queryParams["om"];
}
for (int x = 0; x < lockedLinks.Count; x++)
{
var lockedArticle = GetArticleIdLocked(lockedLinks[x]);
var filteredId = GetArticleIdFiltered(ExtractLinks.FilteredLinks[i]);
if (lockedArticle == filteredId)
{
string h = "found";
}
}
如果你知道id总是数字,你可以更准确地解析它并比较int而不是字符串。