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

时间:2012-02-08 06:01:28

标签: java csv opencsv

我有一个csv文件,其中包含5个字段,其中1个字段具有嵌入的换行符。我可以使用CSVReader [OpenCSV]完美地读取csv文件。尽管有嵌入式换行符,我也能够获得单独的字段。但我想编写另一个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 个答案:

答案 0 :(得分:2)

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

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

然后使用OpenCSV将newFields写回。

答案 1 :(得分: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;
    }