C#的新手.我正在从一个.csv文件中读取两列,并创建一个IEnumerable<string[]>.我有下面的代码,它是工作的,但有时一行可能是空的(由下表中的半高行所示),在这种情况下,我想用字符串"0"来替换它.当我调试代码时,任何空单元格在列表中都显示为"".

Lat Lng
51.452703 36.622065
28.721829 41.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(); // read past the header
        while (!parser.EndOfData)
        {
            yield return parser.ReadFields().Skip(6).Take(2).Reverse().ToArray();
        }
    }
}

下面是我try 用"0"替换"",但是我得到了错误:string不能为零长度,paramenter name oldValue.我明白了,它需要一些东西来寻找.但我不知道现在该go 哪.

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

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

        parser.ReadFields(); // read past the header
        while (!parser.EndOfData)
        {
            test = parser.ReadFields().Skip(6).Take(2).Reverse().ToArray();
            var replacedNames = test.Select(x => x.Replace("", "0")).ToArray();
            yield return replacedNames;
        }
    }
}

推荐答案

事实上,x.Replace("", "0")抛出解释在docs:

Definition

返回一个新字符串,在该字符串中,当前字符串中所有出现的指定Unicode字符或String都替换为另一个指定的Unicode字符或String.

Exceptions
ArgumentNullException - oldValue is null.
ArgumentException - oldValue is the empty string ("").

请记住,C#中的字符串是不可变的,如果您想用"0"替换空字符串或空格,您可以这样做:

x => string.IsNullOrWhiteSpace(x) ? "0" : x

Csharp相关问答推荐

ß != ss与ICU进行不区分大小写的比较

PredicateBuilder不是循环工作,而是手动工作

以自动方式注销Azure身份应用程序

将列表字符串映射为逗号分隔字符串<>

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

C#EF Core 8.0表现与预期不符

Blazor EventCallback<;MyType<;T>;>;

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

使用两个不同的枚举作为Switch语句中的CASE生成唯一值

如何注册类使用多级继承与接口

未找到任何HTTP触发器.成功部署Azure Functions Project后(c#)

如何在C#中将方法/线程启动传递给基本构造函数

.NET8->;并发词典总是比普通词典快...怎么回事?[包含基准结果和代码]

Content WithTargetPath实际上是有效的MSBuild项吗?

为什么Azure函数(独立工作进程)索引失败?使用Azure App配置的CosmosDbTrigger绑定失败,未解析为值

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

Linq SELECT的多条指令

如何使ExecuteAsync异步运行

如果图表S批注包含使用LINQ的具有特定名称的批注,我如何签入C#

MudBlazor MudTabs-->;选项卡内容高度