2016-04-20 7 views
0

Ich Verschrottung Daten von einer Website und speichern Sie es in CSV-Datei. Wenn die Daten in die CSV-Datei gelangen, erhält sie das Komma an der letzten Stelle jeder Zeile. Irgendwie komme ich damit klar. Aber jetzt bekomme ich dieses Komma ganz am Anfang jeder Zeile, die eine weitere Spalte erstellt. Folgendes ist mein Code.Komma beim Start der .CSV-Datei in Java vermeiden

for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
        if (it.hasNext()) { 
         sb.append(" \n "); 
        } 
        for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) { 
         Element tdElement = it.next(); 
         final String content = tdElement.text(); 

         if (it2.hasNext()) { 
          sb.append(" , "); 
          sb.append(formatData(content)); 
         } 

         if (!it2.hasNext()) { 
          String content1 = content.replaceAll(",$", " "); 
          sb.append(formatData(content1)); 
          break; 
         } //to remove last placed Commas. 

        } 

        System.out.println(sb.toString()); 
        sb.flush(); 
        sb.close(); 

Ergebnis, das ich zB will: a, b, c, d, e
Ergebnis, das ich erhalte zum Beispiel:, a, b, c, d, e

Antwort

0
StringBuffer sb = new StringBuffer(" "); 
    for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
        if (it.hasNext()) { 
         sb.deleteCharAt(sb.length() - 1); 
         sb.append(" \n "); 
        } 
        for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) { 
         Element tdElement = it.next(); 
         final String content = tdElement.text(); 

         if (it2.hasNext()) { 
          sb.append(formatData(content)); 
          sb.append(","); 

         } 

         if (!it2.hasNext()) { 
          String content1 = content.replaceAll(",$", " "); 
          sb.append(formatData(content1)); 
          break; 
         } //to remove last placed Commas. 

        } 

        System.out.println(sb.toString()); 
        sb.flush(); 
        sb.close(); 


} 

im zu remove die letzten character versuchen, die ein , bei dem instance where it is trying to move to a new line versuchen zu ersetzen mit meinem Code in Ihrem Fall ist und vergewissern Sie sich, um instantiate stringbuffer mit einem space als String übergeben.

+0

Nicht funktionierend, beginnen Sie Komma an der letzten Stelle, nachdem Sie dies getan haben. –

+0

machte wieder einige Änderungen, bt müssen Sie vielleicht einen Blick auf 'stringJoiner' werfen, das wäre sehr einfach mit' stringJoiner' – Priyamal

+0

Ich habe versucht, Ihren Code, aber immer noch das Problem bestehen. Ich versuche, StringJoiner zu verwenden, aber es gibt einen Fehler. Ich denke, es passiert aufgrund Java-Version, d. –

3

Wenn Sie sich entwickeln In Java 8 empfehle ich, dass Sie StringJoiner verwenden. Mit dieser neuen Klasse müssen Sie die Zeichenfolge nicht selbst erstellen. Sie finden ein Beispiel zum Erstellen einer CSV mit StringJoinerhere.

Ich hoffe es hilft.

+0

Ich habe meine Java-Version auf 8 aktualisiert. Aber jetzt bekomme ich einen neuen Bug, d. H. Ich bekomme nur eine einzige Zeile in der CSV-Datei, während es mehr Zeilen bringen sollte. Ich verwende StringJoiner noch nicht. –

+0

Sie könnten einen StringJoiner pro Raw definieren und sie wie in Ihrem Code-Extrakt auf der Konsole ausgeben. Lass es mich wissen, wenn es deine Frage beantwortet. – joel314