如何使用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。
答
使用下面的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
我编辑了我的帖子。仍然我无法弄清楚它的正确性。 – mihirk 2012-02-08 06:47:20
'replace()'方法不会更新输入参数,这在我的伪Java示例中有点不同。它返回一个包含结果的NEW字符串。我已经更新了我的答案。 – 2012-02-08 06:50:44
即使现在也没有成功!请在原文中检查编辑过的代码.. – mihirk 2012-02-08 07:01:19