【问题标题】:Splitting string by spaces but ignore spaces inside a quote按空格分割字符串,但忽略引号内的空格
【发布时间】:2012-08-03 14:02:44
【问题描述】:

我有一个从 csv 文件中获取数据的大字符串,但是当使用正则表达式时,例如:

Regex regex = new Regex(@"\w+|""[\w\s]*""");

而是拆分每个字母?每行没有空格,只有在行尾 - 但不应该在双引号内有空格的地方剪断行。

示例:test1,test2,test3,test4,test5,"test 6",test7(新 行)test8、test9等

有人可以指导我正确的方向吗?谢谢

【问题讨论】:

标签: c# regex csv split


【解决方案1】:

我建议参考 an existing solution 而不是重新发明自己的(除非你是为了学习经验!)解析 CSV 比看起来更棘手。

编辑:没有看到您使用的是 C#。 Herearemorelinks.

【讨论】:

  • 解析 CSV 的主要技巧是弄清楚确切的规则是什么。有很多不同的变体,略有不同。实际上,一旦你弄清楚你需要哪些规则就解析它并不难,即使你手动进行。
【解决方案2】:

使用现有的 CSV 解析器而不是尝试使用 Regex - 正如您所见,格式很微妙。

FileHelpers 是一个流行的库,TextFieldParser 位于 Microsoft.VisualBasic.FileIO 命名空间中。

【讨论】:

  • 我无法想象这是最好的方法,但现在它是我唯一的选择。谢谢
  • @MarkW - 最好的?在什么方面?开发努力?可维护性?速度?结果正确吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 2017-09-02
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多