为什么C#tab和逗号分隔的区别?

时间:2014-11-19 19:32:34

标签: c# excel csv split

我有一个包含10列的Excel电子表格。并非所有单元格都包含数据如果我将它保存为制表符分隔文件并使用Split()(如下所示),我将获得与将其保存为逗号分隔文件时不同的结果,它将返回IndexOutOfBounds异常。

如果我这样做:

String tabSepartor = "\t";
lineTokens = inputLine.Split(tabSepartor.ToCharArray());
int lineTokensLength = lineTokens.Length;

在制表符分隔的文件中,我会得到长度为8或10的结果,但如果我使用逗号分隔符进行,则它将始终显示为10.

String commaSeparator = ",";
lineTokens = inputLine.Split(commaSeparator.ToCharArray());

如何让制表符分隔的Split()与逗号分隔的分割相同?

编辑(根据要求): 这是逗号分隔的行:

Info,Info,1/1,select,Yes,Info,Info,Info,,

以下是制表符分隔的行:

Info    Info    1/1 select  Yes Info    Info    Info        

1 个答案:

答案 0 :(得分:2)

分隔文件仍然可以包含实际数据中的分隔符

First,Second,Third,"Fourth, then more",Fifth

因此,您应该使用.NET的TextFieldParser类。它比Split慢,但会正确解析你的CSV。