【发布时间】:2013-12-28 05:49:52
【问题描述】:
我正在创建一个逗号分隔值的字符串数组。 我需要用逗号分隔行,但不是引号内的逗号,因为这可能是数据的一部分。
例如:\"421 15th Ave.\",\"Beaver Falls, PA\",\"S1\",
我不希望它在城市和州之间为一个新领域而分裂。
这是目前的代码:
string[] fields = Regex.Split(lines[i], @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))");
执行需要很长时间。 我可以使用更好的选择吗?
感谢您对此的任何帮助。
【问题讨论】:
-
您需要使用正则表达式吗? CSV 通常最好使用简单的旧
string方法来处理。 -
我不需要使用当前使用的正则表达式。寻找更好的选择。您建议使用哪种字符串方法来解决此问题?
-
使用某种
csv阅读器。假设你使用的是一个不错的,这已经被处理并且代码应该被优化。 -
如果您使用 Parallel.ForEach 和 Parititioner.Create 在处理器之间并行分割文件行,您可能会获得更高的性能。这样,您可以在处理器 1 上处理 LINES0-1000,在处理器 2 上处理 LINES1001-2000,从而获得 2 倍的改进。