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

C#程序读取指定前缀文本行失败:目标输出文件为空

问题分析与解决方案

嘿,我一眼就瞅出你代码里的问题啦!目标文件为空的根源在于你Linq过滤条件用错了方法~

你看这段代码:

.Where(line => prefixes.All(prefix => line.StartsWith(prefix)))

All()方法的逻辑是要求当前行必须同时满足所有前缀的StartsWith条件,但一行文本怎么可能同时以Mr.、Mrs.和Ms.开头呢?这就导致没有任何行能通过过滤,写入的文件自然是空的。

修正后的代码

把All()换成Any()就搞定了,Any()的逻辑是只要行满足任意一个前缀的StartsWith条件,就会被选中:

var prefixes = new List<string> { "Mr.", "Mrs.", "Ms." };
// 读取文件并过滤符合条件的行
var nameIDLines = File.ReadAllLines(filePath)
    .Where(line => prefixes.Any(prefix => line.StartsWith(prefix)))
    .ToList();
// 将过滤后的内容拼接成字符串并写入目标文件
var filteredAsString = string.Join(Environment.NewLine, nameIDLines);
File.WriteAllText(targetFilePath, filteredAsString);

额外优化建议

如果需要忽略大小写(比如匹配mr.、MS.这类格式),可以给StartsWith加上大小写忽略的参数:

.Where(line => prefixes.Any(prefix => line.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:28:24