为什么内循环中的检查条件永远不为真
本文关键字:永远 条件 检查 循环 为什么 | 更新日期: 2023-09-27 18:11:34
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 = "found";但是因为它从来没有停止在那里,我猜是我的IF条件有问题。
如果发现它,我想从FilteredLinks中删除链接,也从lockedLinks中删除假设从两个列表中相同的链接。这些链接在地址上不相同,但它们指向同一个页面,所以我认为它们是相同的,它们都应该被删除。
如果你知道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总是数字,你可以更准确地解析它,比较整数而不是字符串。