如何使用OpenCSV跳过csv文件中的嵌入式"newlines"



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

谢谢你的帮助!

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

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

然后使用OpenCSV写回newFields。

使用下面这样的util方法。稍微修改了@Jim Garrison的答案。将"\\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;
    }

相关内容

  • 没有找到相关文章

最新更新