优化逗号分隔值正则表达式

时间:2013-12-10 15:56:50

标签: c# regex csv quotes

我正在创建一个逗号分隔值的字符串数组。 我需要在逗号上分割行,但不要在引号内分割逗号,因为它可能是数据的一部分。

例如:
\"421 15th Ave.\",\"Beaver Falls, PA\",\"S1\",

我不希望它在城市和州之间分配一个新领域。

以下是目前的代码:

string[] fields = Regex.Split(lines[i], @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))");

执行需要很长时间。 我可以使用更好的选择吗?

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用CSV阅读器? 这个CSV-Reader应该已经处理双引号内的逗号: OpenCsv

请参阅Ravi Thapliyal在此主题中关于如何使用它的答案:link

对于C#,我可以推荐这个CsvHelper:https://github.com/JoshClose/CsvHelper

我们在项目中使用它,非常方便