2016-08-16 88 views
0

id喜欢删除/跳过下面图片中的突出显示的行,这样它们就不会再出现在csv文件中。如下所示,它显示两行为(,,),因为行是空的。从csv c中删除空行#

你也可以在代码中看到我试图在这两种方法中使用string.Empty,但似乎没有得到任何地方,因为我真的不知道如何做到这一点。

任何建议

class Program 
{ 
    static void Main(string[] args) 
    { 
     var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Santander .csv"); 
     var fileContents = ReadFile(filePath); 
     foreach (var line in fileContents) 
     { 
      if (!line.Equals(String.Empty)) 
       continue; 
      Console.WriteLine(line); 
     } 

     Console.WriteLine("Press any key to exit..."); 
     Console.ReadKey(); 
    } 

    public static IList<string> ReadFile(string fileName) 
    { 
     var results = new List<string>(); 
     var target = File.ReadAllLines(fileName) 
       .ToList(); 
     foreach (string currentLine in target) 
     { 
      if(!currentLine.Equals(String.Empty)) 
      { 
       continue; 
      } 


     } 

     File.WriteAllLines(fileName, target); 

     return results.ToList(); 

enter image description here

+0

如果任何列为空或空白,是否要删除该行? –

+0

如果可能但理想情况下只有column1和column2是主要关注的 – user5813072

+0

该行不会是空的,因为它有第3和第4列..甚至id它们都是空的youd拥有“,,,”作为csv字符串.. – BugFinder

回答

0

看来,要只是初试和第二列:

public static IList<string> ReadFile(string fileName) { 
    var target = File 
    .ReadLines(fileName) 
    .Where(line => line 
     .Split(',') 
     .Take(2) 
     .All(item => !string.IsNullOrEmpty(item))) 
    .ToList(); 

    File.WriteAllLines(fileName, target); 

    return result; 
} 
+0

是的,所有我想要的,因为所有其他行中包含的数据,我想显示 – user5813072

0

您也可以用,分割每行筛选行并比较前两列。

var nonEmptyLines = File.ReadAllLines(fileName) 
         .Where(x=> !x.Split(',') 
            .Take(2) 
            .Any(cell=> string.IsNullOrWhiteSpace(cell)) 
            // use `All` if you want to ignore only if both columns are empty. 
         ).ToList(); 

File.WriteAllLines(fileName, nonEmptyLines); 
+0

您的代码似乎工作,但它删除第3和第4列中的第3和第4列,其中包含。我也想这些也被显示 – user5813072