我的csv文件结构是:
int | only numbers
string | only characters
string | only characters
int | only numbers
char | only a character
假设csv文件中的一行具有无效数据 - 与已确定的数据类型不匹配。 例如:
27 | Patrick | 777 | 32 | Male
然后我想要无效的行号 - 在这种情况下排#27。
请帮忙。
答案 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++;
}
你必须编写一个函数来检查行当然是否有错误