4

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

谢谢您的帮助!

4

2 回答 2

2

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

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

然后使用 OpenCSV 将 newFields 写回。

于 2012-02-08T06:22:33.263 回答
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;
    }
于 2015-01-19T06:48:14.040 回答