有没有办法在 C# 中解释 CSV 单元格拆分符号?

Is there a way to interpret CSV cell splitting symbol in C#?

当我开始保存 CSV 文件时,我注意到行之间并不总是以逗号 (,) 分隔,而是以分号 (;) 分隔。有没有办法在 C# 中记录它,无论它是分号还是逗号,它都应该将单元格分隔成不同的字符串。

我有一个包含 2 列的模板:名称,属性

名称非常简单,但 属性 可能包含多个以逗号分隔的值。

示例:

Name1; Property1, Property2, Property3
Name2; Property2, Property3
Name3; Property1

现在我需要了解的是:C# 是否具有识别单元格分隔符号的函数,因为它可能是 (,) 或 (;)? 而如果相同的数据用逗号表示:

Name1, Property1, Property2, Property3
Name2, Property2, Property3
Name3, Property1

我应该如何进行分离,而不至于得到比我需要的更多的列,或者这是否可能?

您可以使用 TextFieldParser class 来解析分隔文件。它有一个分隔符 属性,您可以将其设置为文件的任何分隔符:

TextFieldParser tfp = new TextFieldParser("C:\File.txt");
tfp.Delimiters = new[] {",", ";"};

var fields = tfp.ReadFields();

String.Split 相比,它的优势在于它只需设置一个标志即可处理带引号的字段。如果包含在引号中,它还将处理包含 CRLF 的输入。

String.Split 方法是你的朋友,它接受应该考虑拆分的参数数组。

string[] cells = line.Split(',',';')

如果您喜欢 StringSplitOptions 重载,您甚至可以排除空值。