2016-08-16 373 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