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

C#如何提取文件中指定字符串后的所有匹配文本内容

解决方案

问题原因

原代码在foreach循环中首次匹配到目标内容后就直接调用return返回了单个结果,直接终止了后续遍历流程,因此只能拿到第一个匹配项。

调整后代码

// 返回值修改为字符串集合,用于存储所有匹配结果
public List<string> GetAllMatchContents(string filePath, string containString)
{
    var result = new List<string>();
    var allLines = File.ReadAllLines(filePath);
    // 筛选所有包含目标字符串的行
    var matchLines = allLines.Where(line => line.Contains(containString));
    foreach (var line in matchLines)
    {
        var splited = line.Split(new string[] { containString }, StringSplitOptions.None);
        // 防止索引越界,确认拆分后存在对应内容再添加
        if (splited.Length >= 2)
        {
            // 去掉提取内容前后的多余空格和双引号,适配你的配置文件格式
            result.Add(splited[1].Trim(' ', '"'));
        }
    }
    return result.Count > 0 ? result : null;
}

代码说明

  • 把原方法的返回值从单个string修改为List<string>,可容纳任意数量的匹配结果
  • 新增集合变量存储每次遍历得到的匹配内容,遍历完所有符合条件的行之后统一返回
  • 增加了拆分后的长度判断,避免行内包含目标字符串但拆分后索引越界的异常
  • 新增Trim(' ', '"')逻辑,针对你提供的配置文件示例,调用时传入containString = "AccountName"就能直接得到["dummy1","dummy2"]的返回结果
  • 修正了原代码中变量名cotainstring的拼写错误,统一改为containString,可根据自己的实际变量名调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:06