使用C#拆分CSV中的行

时间:2017-07-13 13:58:52

标签: c# regex csv split

我正在阅读一个CSV文件,一行显示如下

Context Tenant: {Vendor: 1, Customer: 719046046}","1,664,705.67","","7/11/2017 4:55 PM"

现在我想将其拆分并收集数组中的每个值。

value[0] should be Context Tenant: {Vendor: 1, Customer: 719046046}
value[1] should be 1,664,705.67
value[2] should be 7/11/2017 4:55 PM.

尝试使用Regex和Split

var values = line1.Split(new char[] { '\\', '"' ,','}, StringSplitOptions.RemoveEmptyEntries);

var values = Regex.Split(line1, "\\,");

但是我无法按预期读取该值。请你分享一些亮点。

2 个答案:

答案 0 :(得分:0)

这应该可以胜任。此版本将删除空格

string [] n_new = g.Split(new string[] { "\",\""}, StringSplitOptions.RemoveEmptyEntries)

要摆脱起始端",您可以在拆分前添加额外的Trim

string [] ret = g.Trim('"').Split(new string[] { "\",\""}, StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:0)

由于您的某些元素包含逗号我建议在","上专门拆分,因此请在您的拆分语句中使用它:"\",\""。所以你最终应该:

var values = Regex.Split(line1, "\",\"");

然后要解决在结果中包含"的问题,请考虑:

foreach (string value in string[] values)
    value = value.Replace("\"\"", "");

删除所有不需要的额外双引号(")。有点hacky但它​​应该做的伎俩。