将 CSV 行中不在引号之间的逗号数与 C# 匹配

本文关键字:匹配 之间 CSV | 更新日期: 2023-09-27 18:36:37

>我有一个CSV行,我需要计算该行中的列数。

某些列值包含逗号(在这种情况下,值将用引号括起来)

我需要一个正则表达式,它只匹配没有引号的逗号。

例如:

a,b,c

将匹配 2 个逗号

和行:

a,"b,c",d,"e,f" 

将匹配 3 个逗号

谢谢

纳达夫。

将 CSV 行中不在引号之间的逗号数与 C# 匹配

我怀疑复杂的正则表达式是否会比简单的循环更好:

private static int CountCommas(String source, Char separator = ',') {
  int result = 0;
  Boolean inQuotation = false;
  foreach (Char c in source)
    if (c == '"')
      inQuotation = !inQuotation;
    else if ((c == separator) && !inQuotation)
      result += 1;
  return result;
}

测试

  // 3
  Console.Write(CountCommas("a, '"b,c'", d, '"e,f'""));