You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#代码中!ignore.Any(linkUrl.Contains)逻辑条件不生效排查求助

问题原因排查

以下是导致!ignore.Any(linkUrl.Contains)判断失效的常见原因:

  • 读取的关键词带多余空白符:File.ReadAllLines会完整读取每行的内容,如果你存储关键词的txt文件中存在行首尾空格、制表符、空行,会导致匹配失败。比如关键词行实际是" facebook ",和linkUrl中的"facebook"无法匹配。
  • 大小写不匹配:C#默认的string.Contains是大小写敏感的,如果ignore数组中存储的是"Facebook",而爬取到的链接是"facebook.com",也会出现匹配失败的情况。
  • 关键词长度与链接长度冲突:你设置了linkUrl.Length < 10的过滤条件,如果要排除的关键词本身长度较长(比如facebook长度为8),符合长度条件的链接本身就很难包含这些关键词,容易让你误以为判断逻辑失效。

修复方案

你可以修改判断逻辑,过滤空行、处理首尾空白、忽略大小写匹配:

string[] ignore = File.ReadAllLines(@"logicfiles\[flag]-[ignore-these-links].txt");

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(rawHtml);

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    string linkUrl = link.GetAttributeValue("href", string.Empty);
    // 修改匹配逻辑,兼容空白、大小写问题
    bool shouldIgnore = ignore.Any(key => 
        !string.IsNullOrWhiteSpace(key) 
        && linkUrl.Contains(key.Trim(), StringComparison.OrdinalIgnoreCase)
    );
    if (!shouldIgnore && linkUrl.Length < 10 && !linkUrl.StartsWith("/"))
    {
        DataGridViewLinks.Rows.Add(linkUrl, keywordUsed, "", "", engineUsed);
    }
}

如果修改后仍然不符合预期,可以加断点查看ignore数组的实际内容,确认文件读取结果是否和你预期的关键词列表一致。

内容的提问来源于stack exchange,提问作者logosapp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:09:02