我知道已经存在与此相关的问题:How to keep quotes when parsing csv file?(但它适用于C#)
我们说我有一个带有值的csv,例如:
12312414-DEF_234, "34-DE, 234-EG, 36354-EJ", 23
...
当我用OpenCSV解析它时,它不会保留引号。
CSVReader reader = new CSVReader(new FileReader("../path.csv"), ',', '\"');
List<String[]> list = reader.readAll();
String[][] csvArray = new String[list.size()][];
csvArray = list.toArray(csvArray);
因此,在我将所有值存储到数组中之后,当我尝试打印出值(用于检查)时,引号不存在。
...
System.out.println(csvArray[i][j]);
// output below
// 34-DE, 234-EG, 36354-EJ
如何保留报价?原因是因为我要更改某些值,需要将其重新输出回csv。
答案 0 :(得分:2)
CSVReader
必须解析并删除引号,否则您不会获得一个值34-DE, 234-EG, 36354-EJ
,而是三个值"34-DE
,234-EG
和{{ 1}}。所以引用被删除是可以的。
36354-EJ"
应该为每个需要引用的值再次添加它们。
您是否尝试将数组写回CSV? <{1}} - 实际上包含逗号的任何值 - 应该被引用。
答案 1 :(得分:0)
public static void readCSV(){
String csvFile = "input.csv";
BufferedReader br = null;
String line = "";
String splitter = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] words = line.split(splitter);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}