C# 分割逗号分隔值

标签 c# .net regex csv

如何将逗号分隔的字符串与也可以包含逗号的带引号的字符串分开?

输入示例:

John, Doe, "Sid, Nency", Smith

预期输出:

  • 约翰
  • 美国能源部
  • 南希·希德
  • 史密斯

用逗号分隔是可以的,但我要求允许使用“Sid,Nency”之类的字符串。我尝试使用正则表达式来分割这些值。正则表达式 ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)" 来自 Java 问题,它不起作用对我的 .NET 代码很有用。它可以将一些字符串加倍,找到额外的结果等。

那么分割这些字符串的最佳方法是什么?

最佳答案

这是因为捕获组。只需将其变成非捕获组即可:

",(?=(?:[^""]*""[^""]*"")*[^""]*$)"
      ^^

捕获组将捕获的部分包含在您的结果中。

ideone demo

var regexObj = new Regex(@",(?=(?:[^""]*""[^""]*"")*[^""]*$)");
regexObj.Split(input).Select(s => s.Trim('\"', ' ')).ForEach(Console.WriteLine);

然后修剪结果。

关于C# 分割逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701179/

相关文章:

c# - Web 套接字在一段时间后停止响应

c# - 来自 System.Drawing.Color 的 System.Drawing.Brush

.net - VB.Net 中的 WPF 标记扩展不起作用

c# - 当原始请求有内容时如何克隆 HttpRequestMessage?

php - 使用正则表达式编写 PHP 查询解析器

javascript - 使用 javascript 正则表达式提取指定类的 href 值(单独)

javascript - 如何在 Unity/C# WebGL 平台中调用 async/await JavaScript 函数?

c# - 通用处理程序参数大小限制?

c# - 有条件地允许在 FormView 中进行编辑吗?

regex - 删除R中两种字符串模式之间的字母