2012-02-08 486 views
2

我有一個csv文件,其中包含5個字段,其中1個字段具有嵌入換行符。我可以使用CSVReader [OpenCSV]完美地讀取csv文件。儘管嵌入換行符,我也能夠獲得單個字段。但我想編寫另一個csv文件,其中包含所有字段以相同的方式,但只想忽略「嵌入換行符」而不是行換行符的傳統末尾。有人能告訴我,我怎麼能做到這一點?如何使用OpenCSV在csv文件中跳過嵌入的「換行符」

我使用下面的代碼,但不知何故我仍然無法用「」替換「\ n」。 System.out.println(tempLine [0])的輸出;還包含嵌入的換行符。

CSVReader reader = new CSVReader(new FileReader(INPUT_FILE), ','); 
CSVWriter writer = new CSVWriter(new FileWriter(OUTPUT_FILE), ','); 
String [] nextLine; 
String [] tempLine = new String[1];  
while ((nextLine = reader.readNext()) != null) 
{ 
    System.out.println("Tweet: " + nextLine[3] + "\nSentiment: " + nextLine[4]); 
    tempLine[0] = nextLine[3].replace("\\n", ""); 
    System.out.println(tempLine[0]); 
    writer.writeNext(tempLine);  
} 

謝謝你的幫忙!

回答

2

閱讀完一行後,檢查每個字段並刪除找到的任何換行符。

String[] newFields = new String[fields.length]; 
i=0; 
for (String field : fields) 
{ 
    newFields[i++] = field.replace("\\n",""); 
} 

然後使用OpenCSV重新寫出newField。

+0

我編輯了我的帖子。仍然我無法弄清楚它的正確性。 – mihirk 2012-02-08 06:47:20

+0

'replace()'方法不會更新輸入參數,這在我的僞Java示例中有點不同。它返回一個包含結果的NEW字符串。我已經更新了我的答案。 – 2012-02-08 06:50:44

+0

即使現在也沒有成功!請在原文中檢查編輯過的代碼.. – mihirk 2012-02-08 07:01:19

1

使用下面的util方法。略微修改@Jim Garrison的答案。將「\\ n」更改爲「\ n」

private static String[] cleanNewLine(String[] fields) { 
     String[] newFields = new String[fields.length]; 
     int i = 0; 
     for (String field : fields) { 
      if(field != null) 
       newFields[i] = field.replace("\n", ""); 
      i++; 
     } 
     return newFields; 
    } 
+0

它的工作,謝謝你,你救了我的一天! – mithra 2015-08-20 11:21:27

相關問題