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

如何修改C#代码从文本文件筛选以特定字符串开头的行?

解决从文本文件查找特定开头行的问题

嘿,这问题我熟!给你几个实用的方案,轻松搞定从文本文件找以"CERTAINWORD"开头的行,找不到就返回null的需求:

方案1:用LINQ快速实现(最简洁)

直接在你的ReadAllLines基础上,结合LINQ的FirstOrDefault方法就能搞定,一行代码解决:

string targetLine = System.IO.File.ReadAllLines(@"C:\INPUTFILE.txt")
    .FirstOrDefault(line => line.StartsWith("CERTAINWORD", StringComparison.OrdinalIgnoreCase));

解释:

  • ReadAllLines会把文件所有行读取到字符串数组里
  • FirstOrDefault会返回第一个符合StartsWith条件的行;如果没有任何行匹配,就自动返回null
  • 第二个参数StringComparison.OrdinalIgnoreCase是让匹配不区分大小写,如果需要严格区分,直接去掉这个参数就行:line.StartsWith("CERTAINWORD")

方案2:用循环遍历(适合不想用LINQ的场景)

如果你更习惯用传统循环,也可以这么写:

string targetLine = null;
foreach (string line in System.IO.File.ReadAllLines(@"C:\INPUTFILE.txt"))
{
    if (line.StartsWith("CERTAINWORD"))
    {
        targetLine = line;
        break; // 找到第一个匹配的行就退出循环,提升效率
    }
}

优化建议:处理大文件的情况

注意:如果你的文件特别大,ReadAllLines会把所有内容加载到内存里,可能占用过多资源。这时候推荐用File.ReadLines替代,它是延迟加载的,会逐行读取文件,不用一次性加载全部内容:

string targetLine = System.IO.File.ReadLines(@"C:\INPUTFILE.txt")
    .FirstOrDefault(line => line.StartsWith("CERTAINWORD", StringComparison.OrdinalIgnoreCase));

ReadLines返回的是IEnumerable<string>,只会在需要的时候读取下一行,内存友好度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:52:22