我有一个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);
}
感谢您的帮助!
答案 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;
}