从csv文件中获取每行中所有逗号的计数

时间:2014-10-22 17:37:35

标签: c# console-application

我要完成的是阅读CSV文件并获取每行中的逗号计数。所有CSV文件都相同。有9列,它们由(,)分隔所以我编写了一个简单的函数来读取文件并使用foreach循环读取文件中的每一行。

public static void readCSVFile(string path)
   {
      string _path = path;

      string [] text = File.ReadAllLines(_path);

      foreach (string line in text)
      {
          string currentLine = line;
          Console.WriteLine("\t" + line);
      }

   }

因此,currentLine通常会有如下输出:

  

number,10/21/14 07:01:10,00:28:29,号码(姓名),号码;号码(姓名),号码,号码(姓名),N / A,号码

行中总共有八个,。如何以编程方式获取每行中commas的总数,以便我可以在foreach循环中执行以下操作:

foreach (string line in text)
{
   string currentLine = line;

   if (totalNumberOfCommas == 8)
   {
        //do something
   }
   else
   {
        //do something else
   }

3 个答案:

答案 0 :(得分:6)

如果您只想计算逗号,可以利用字符串实现IEnumerable<char>这一事实,这样就可以使用Count这样:

var commas = line.Count(c => c == ',');

答案 1 :(得分:2)

一种方法是使用String.Split功能。

foreach (string line in text)
{
   string currentLine = line;

   string[] eachColumn = currentLine.Split(',');

   if (eachColumn.Length == 9)
   {
        //do something
   }
   else
   {
        //do something else
   }
}

请注意,如果实际数据中有逗号(而不是字段分隔符),则无法正常工作。您可能应该查看一个csv解析器来帮助解决这类问题。

答案 2 :(得分:1)

你可以试试这样的事情

foreach (string line in text)
{
   string currentLine = line;
   int totalNumberOfCommas = currentLine.Split(',').Length - 1;

   if (totalNumberOfCommas == 8)
   {
        //do something
   }
   else
   {
        //do something else
   }
}