我必须逐行读取一个csv文件并使用Ctrl + A(\ 001)更改换行符(alt +输入,即\ n \ r),空格和comas在字段的一侧。当我尝试使用读取缓冲读取器时,它从\ n开始,而不是将\ n \ r解释为非换行符。我该怎么办呢我必须在java中完成这个
答案 0 :(得分:1)
您可以将整个文件读入String变量,然后使用String.replaceAll()
替换所需的字符: -
File file = new File("abc.csv");
FileInputStream fis = null;
fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();
String str = new String(data, "UTF-8");
然后替换字符串中的字符: -
str = str.replaceAll("\r\n", " ");
str = str.replaceAll("[,]", ";");
System.out.println(str);
然后,您可以使用新字符串
创建新文件或覆盖现有文件答案 1 :(得分:0)
我认为你的意思是" \ r \ n"而不是" \ n \ r"。通常基于Windows的程序生成" \ r \ n"而基于Linux的程序使用" \ n"。
缓冲读卡器通常使用全局" line.separator"应该专门为您的系统设置的设置。
旁注:使用框架进行解析通常很有趣,而不是进行实际的行读取,因为框架通常包含很多边缘情况(如此)。