删除介于两个值之间的值
Delete a value with between two values
可能有点复杂,但我很努力地尝试并得到了结果。我从一个带有 HtmlAgilityPack 的站点获取视频链接。
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(@"C:\Users\e9396\Desktop\r.html");
foreach (HtmlNode links in doc.DocumentNode.SelectNodes("//a[@href]"))
{
if (links.NextSibling != null)
{
ArrayList ArrayLinksList = new ArrayList();
ArrayLinksList.Add(links.Attributes["href"].Value);
listbox.Items.AddRange(ArrayLinksList.ToArray());
}
}
不过部分链接如下
/video/93409905175
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409905175&st.cmd=userMain
/video/93361801751
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93361801751&st.cmd=userMain
/video/93442476567
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442476567&st.cmd=userMain
/video/93409839639
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409839639&st.cmd=userMain
/video/93442411031
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442411031&st.cmd=userMain
/video/93442345495
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442345495&st.cmd=userMain
/video/93461940759
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93461940759&st.cmd=userMain
这样的链接“/video/93409905175”OK。
但是我想删除这样的链接
"/video/93409905175 /dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409905175&st.cmd=userMain".
由于标记位置的粗体 ID,我无法删除它。
我想成为那样的人,谢谢。
/video/93409905175
/video/93361801751
/video/93442476567
/video/93409839639
/video/93442411031
/video/93442345495
/video/93461940759
使用这个函数:
public static IEnumerable<string> FilterLinks(HtmlDocument doc, string regexFilter)
{
var regex = new Regex(regexFilter);
return doc.DocumentNode
.SelectNodes("//a[@href]")
.Where( n => n.NextSibling != null &&
regex.IsMatch(n.GetAttributeValue("href", string.Empty)))
.Select(n => n.GetAttributeValue("href", string.Empty));
}
这样称呼它:
foreach(var link in FilterLinks(doc, @"^\/video\/[0-9]*")) listbox.Items.Add(link);
感谢 Travis Sharp 的进步,但是过程 FilterLinks 返回的值类型链接可能不合适。
public static IEnumerable<string> FilterLinks(HtmlAgilityPack.HtmlDocument doc, string regexFilter)
{
var regex = new Regex(regexFilter);
return doc.DocumentNode
.SelectNodes("//a[@href]")
.Where(n => n.NextSibling != null
&& regex.IsMatch(n.GetAttributeValue("href", string.Empty)))
.Select(n => n.GetAttributeValue("href", string.Empty));
}
FilterLinks 我们从变量中获取返回值。
我们这样称呼它:
var xLinkeler = FilterLinks(doc, @"^\/video\/[0-9]*");
foreach (var iett in xLinkeler)
{
listbox.Items.Add(iett);
}
可能有点复杂,但我很努力地尝试并得到了结果。我从一个带有 HtmlAgilityPack 的站点获取视频链接。
HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = hw.Load(@"C:\Users\e9396\Desktop\r.html");
foreach (HtmlNode links in doc.DocumentNode.SelectNodes("//a[@href]"))
{
if (links.NextSibling != null)
{
ArrayList ArrayLinksList = new ArrayList();
ArrayLinksList.Add(links.Attributes["href"].Value);
listbox.Items.AddRange(ArrayLinksList.ToArray());
}
}
不过部分链接如下
/video/93409905175
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409905175&st.cmd=userMain
/video/93361801751
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93361801751&st.cmd=userMain
/video/93442476567
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442476567&st.cmd=userMain
/video/93409839639
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409839639&st.cmd=userMain
/video/93442411031
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442411031&st.cmd=userMain
/video/93442345495
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93442345495&st.cmd=userMain
/video/93461940759
/dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93461940759&st.cmd=userMain
这样的链接“/video/93409905175”OK。
但是我想删除这样的链接
"/video/93409905175 /dk?cmd=VideoVitrinaPopup&st.redirect=myVideo&st.vvp_cmd=VideoVitrinaPopupMovieEdit&st.vv_movieId=93409905175&st.cmd=userMain".
由于标记位置的粗体 ID,我无法删除它。
我想成为那样的人,谢谢。
/video/93409905175
/video/93361801751
/video/93442476567
/video/93409839639
/video/93442411031
/video/93442345495
/video/93461940759
使用这个函数:
public static IEnumerable<string> FilterLinks(HtmlDocument doc, string regexFilter)
{
var regex = new Regex(regexFilter);
return doc.DocumentNode
.SelectNodes("//a[@href]")
.Where( n => n.NextSibling != null &&
regex.IsMatch(n.GetAttributeValue("href", string.Empty)))
.Select(n => n.GetAttributeValue("href", string.Empty));
}
这样称呼它:
foreach(var link in FilterLinks(doc, @"^\/video\/[0-9]*")) listbox.Items.Add(link);
感谢 Travis Sharp 的进步,但是过程 FilterLinks 返回的值类型链接可能不合适。
public static IEnumerable<string> FilterLinks(HtmlAgilityPack.HtmlDocument doc, string regexFilter)
{
var regex = new Regex(regexFilter);
return doc.DocumentNode
.SelectNodes("//a[@href]")
.Where(n => n.NextSibling != null
&& regex.IsMatch(n.GetAttributeValue("href", string.Empty)))
.Select(n => n.GetAttributeValue("href", string.Empty));
}
FilterLinks 我们从变量中获取返回值。
我们这样称呼它:
var xLinkeler = FilterLinks(doc, @"^\/video\/[0-9]*");
foreach (var iett in xLinkeler)
{
listbox.Items.Add(iett);
}