1

可能重复:
在 C# 中解析 CSV 文件

我有一个解析管道分隔文件的 C# 应用程序。它使用 Regex.Split 方法:

Regex.Split(line, @"(?<!(?<!\\)*\\)\|")

然而,最近一个数据文件遇到了一个包含在其中一个数据字段中的管道。有问题的数据字段使用带引号的标识符,因此当您在 Excel 中打开时,它会正确打开。

例如,我有一个看起来像这样的文件:

Field1|Field2|"字段 3 在引号内有一个 |"|Field4

当我使用上面的正则表达式时,它会解析为:

Field1
Field2
Field 3 有一个
内引号
Field4

当我想

Field1
Field2
Field 3 有一个 | 在引号内
Field4

我已经进行了大量研究,似乎无法让 Regex.Split 在管道上拆分文件,但尊重引用的标识符。任何帮助是极大的赞赏!

4

1 回答 1

1

这是我拼凑起来的一个快速表达,似乎可以解决问题:

"([^"]+)"|([^\|]+)

尽管您的表达式似乎也与 \'s 一起做某事,但您可能需要在此表达式中添加您有的任何其他需求。我在回答中忽略了它们,因为问题中没有解释它们,因此我无法在不知道它们为什么存在的情况下提供解决方案——它们实际上可能根本不需要存在。

另外,我的表达式虽然忽略了空字段(即 1||2|3 将仅作为 1、2 和 3 出现)并且我不知道这是否是您需要的,如果不是让我知道,我可以将表达式更改为也可以满足此要求的内容。

无论如何,希望这会有所帮助。

于 2012-08-13T10:33:08.490 回答