为什么C#制表符和逗号分隔的拆分不同

本文关键字:拆分 分隔 制表符 为什么 | 更新日期: 2023-09-27 18:30:59

我有一个有 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        

为什么C#制表符和逗号分隔的拆分不同

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

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

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