例如,在变量result中,我有:
“2023_03_15_11_50”
它是m中链接的一部分。值:
https://something.com/7c4bbe_c8be14c442b74430b94a983613275e0e~mv2.png/v1/fill/w_512,h_512,al_c,q_85,enc_auto/2023_03_15_11_50.png
但即使我检查添加只有当“2023_03_15_11_50”不存在的最后仍然有两个项目在链接列表中具有相同的“2023_03_15_11_50”
两个不同的链接,但它们都包含在末尾“2023_03_15_11_50”
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;
using System.Xml;
using HtmlAgilityPack;
namespace Strings
{
public partial class Form1 : Form
{
private List<string> links = new List<string>();
private string htmlCode = "";
public Form1()
{
InitializeComponent();
GetLinks();
}
private void GetLinks()
{
using (WebClient client = new WebClient())
{
htmlCode = client.DownloadString("https://somesite.com");
}
var linkParser = new Regex(@"\b(?:https?://|www\.)\S+\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var rawString = htmlCode;
foreach (Match m in linkParser.Matches(rawString))
{
if (m.Value.EndsWith("png"))
{
if (!links.Contains(m.Value))
{
int index = m.Value.LastIndexOf("/");
int index1 = m.Value.LastIndexOf(".png");
string result = m.Value.Substring(index + 1, index1 - index - 1);
if (!links.Contains(result))
{
links.Add(m.Value);
}
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
1条答案
按热度按时间pokxtpni1#
这里
links.Contains(result)
只检查result
是否在列表中,但列表实际上包含URL,因此它仍然返回false。您需要将
result
和URL都存储在一个集合中,例如,您可以将列表替换为字典:GetLinks
方法中的代码需要更改为: