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

使用TextFieldParser读取CSV时无法将空条目替换为"0"的问题

CSV读取中空值替换为"0"的问题

我是C#新手,正在从CSV文件读取两列数据并生成IEnumerable<string[]>,现有代码可正常运行,但遇到整行空值的情况时,希望把空单元格的""替换成字符串"0",调试时空单元格显示为""。

表格示例

LatLng
51.45270336.622065
28.72182941.013330

原始CSV数据格式

Col1,Col2,Col3,Col4,Col5,Col6,Lat,Lng,Col9
one street,300,,,GUANGDONG,CN,,,

现有可运行代码

public static IEnumerable<string[]> ReadCSV(string path)
{
    using (var parser = new TextFieldParser(path))
    {
        parser.Delimiters = new string[] { "," };

        parser.ReadFields(); // 跳过表头
        while (!parser.EndOfData)
        {
            yield return parser.ReadFields().Skip(6).Take(2).Reverse().ToArray();
        }
    }
}

尝试的错误代码及问题

我尝试替换空值的代码如下,但报错:string cannot be of zero length, parameter name oldValue,明白是搜索内容的问题,但不知道如何解决:

public static IEnumerable<string[]> ReadCSV(string path)
{
    string[] test;

    using (var parser = new TextFieldParser(path))
    {
        parser.Delimiters = new string[] { "," };

        parser.ReadFields(); // 跳过表头
        while (!parser.EndOfData)
        {
            test = parser.ReadFields().Skip(6).Take(2).Reverse().ToArray();
            var replacedNames = test.Select(x => x.Replace("", "0")).ToArray();
            yield return replacedNames;
        }
    }
}

解决方案

报错原因是string.Replace("", "0")的第一个参数为空字符串,而Replace方法要求oldValue不能是空值。正确做法是先判断字符串是否为空(或空白),再替换为"0"。

修改后的代码如下:

public static IEnumerable<string[]> ReadCSV(string path)
{
    using (var parser = new TextFieldParser(path))
    {
        parser.Delimiters = new string[] { "," };

        parser.ReadFields(); // 跳过表头
        while (!parser.EndOfData)
        {
            var fields = parser.ReadFields().Skip(6).Take(2).Reverse();
            // 替换空字符串或null为"0"
            var processedFields = fields.Select(x => string.IsNullOrEmpty(x) ? "0" : x).ToArray();
            yield return processedFields;
        }
    }
}

补充说明

  • 如果需要同时处理仅含空格的空白字符串,可将判断条件改为string.IsNullOrWhiteSpace(x)。
  • 代码中直接对字段流进行处理,无需额外定义临时数组,简化了逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:45:12