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

C#:StreamReader无法读取末尾含空值的行如何处理?

解决StreamReader读取末尾带空值的分隔行问题

你遇到的问题其实不是StreamReader读不了那一行,而是分割字符串时默认丢掉了末尾的空值,咱们一步步来搞定:

问题根源

默认的string.Split('|')方法会自动忽略末尾的空条目,所以第4行123456785|DUSTIN|PEDROIA|01/01/83|BASEBALL|在分割后,最后那个空字段会被丢掉,导致你拿到的字段数比预期少。

解决方案:用Split重载保留所有空值

只需要在分割时指定StringSplitOptions.None参数,就能强制保留所有分割结果,包括开头、中间和末尾的空字符串。

下面是完整的读取+分割代码示例:

using (StreamReader reader = new StreamReader("你的文件路径.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // 关键:通过StringSplitOptions.None保留所有空字段
        string[] fields = line.Split(new[] { '|' }, StringSplitOptions.None);
        
        // 现在fields数组会包含所有6个字段,第5个索引(从0开始)是空字符串
        // 这里可以添加你的字段处理逻辑
        Console.WriteLine($"处理行:{line},字段数:{fields.Length}");
    }
}

额外提示

如果你的文件后续可能出现复杂场景(比如字段里包含|、引号或者换行),建议用专门的分隔符解析库(比如CsvHelper),它能更稳健地处理各种边缘情况。但针对你现在的简单场景,上面的Split方法完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:01:15