2017-07-28 3 views
-2

löschen Zeilen basierend auf der doppelten Spalte in einer CSV-Datei für zB. CSV-Datei enthält.löschen Zeile in einer CSV-Datei

CampaignCode | CellCode  | StartDate | Phone| Account 
C000001413 | A000363363 | 20170601 | 4167292999 | 999999999 
C000001414 | A000363364 | 20170601 | 4167292999 | 999999999 

Hier möchte ich auf der Grundlage der Phone Spalte Duplikate die komplette Zeile löschen. erwartete Ausgabe ist: CampaignCode | CellCode | Startdatum | Telefon | Konto C000001413 | A000363363 | 20170601 | 4167292999 | 999999999

+5

Was haben Sie versucht, es selbst zu lösen? Diese Seite ist nicht für fertige Antworten gedacht. Bitte teile deine Versuche und suche dann Hilfe. – Prasanna

+0

Bitte lesen Sie [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask), bevor Sie weitere Fragen stellen. –

+0

Bitte lesen Sie [Warum ist "Kann mir jemand helfen?" Keine eigentliche Frage?] (Https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an- Ist-Frage) bevor Sie weitere Fragen stellen. –

Antwort

-1

Lösung für Sie ist lesen Sie die CSV-Datei Zeile für Zeile, setzen Sie jede Zeile in eine Liste und überprüfen Sie doppelte Spalte, die Sie wollen => schreiben Sie die Liste der neuen Zeile in der aktuellen Datei. Beispielcode für Sie (ich verwende Komma, um anstelle von | zu trennen)

public class CSVReader { 
    public static void main(String[] args) throws IOException { 

     String csvFile = "csv.csv"; 
     BufferedReader br = null; 
     String line = ""; 
     String cvsSplitBy = ","; 
     List<String> lines = new ArrayList<String>(); 
     boolean isDuplicate = false; 

     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 
      isDuplicate = false; 
      String[] object = line.split(cvsSplitBy); 
      for (String l : lines) { 
       if (l.contains(object[3])) { 
        isDuplicate = true; 
        break; 
       } 
      } 
      if (!isDuplicate) { 
       lines.add(line); 
      } 
     } 
     for (String newL : lines) { 
      System.out.println(newL); 
     } 
     br.close(); 
    } 
} 
+0

Sie haben Schreibcode, dann testen Sie es einfach. Welches Problem kann man nicht testen? –

+0

lokal getestet und es funktioniert gut. – vikas

Verwandte Themen