在读取csv时查找无效数据行号

时间:2015-08-06 12:11:02

标签: c# csv

我的csv文件结构是:

int      | only numbers  
string   | only characters 
string   | only characters 
int      | only numbers  
char     | only a character

假设csv文件中的一行具有无效数据 - 与已确定的数据类型不匹配。 例如:

27      | Patrick     | 777         | 32       | Male

然后我想要无效的行号 - 在这种情况下排#27。

请帮忙。

2 个答案:

答案 0 :(得分:1)

助手方法:

bool ContainsOnlyNumbers( string input )
{
  // beginning of string, one or more digits, end of string
  return Regex.IsMatch( input, @"^\d+$" );
}

bool ContainsOnlyLetters( string input )
{
  // beginning of string, one or more letters, end of string
  return Regex.IsMatch( input, @"^[A-Za-z]+$" );
}

您需要考虑是否允许空格 - 您可能需要在字符串上调用.Trim。

答案 1 :(得分:0)

我想到的第一件事是:

List<int> invalidRows;
int currentRow = 0;

 var reader = new StreamReader(File.OpenRead(myfile));
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(';');
        if(rowHasErrors(values))
            invalidRows.Add(currentRow);
        currentRow++;
    }

你必须编写一个函数来检查行当然是否有错误