如何使用OpenCSV在csv文件中跳过嵌入的“换行符”

问题描述:

我有一个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);  
} 

谢谢你的帮忙!

阅读完一行后,检查每个字段并删除找到的任何换行符。

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

使用下面的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