如何使用opencsv读取包含'\'的字符串?

Chr*_*son 11 java opencsv

当我使用opencsv读取csv文件时,在字符串末尾遇到'\'时它无法正常工作.这使得"字符串的一部分,而不是'\’,因为我想我想一定是添加另一个'\’有它逃脱'\’一些方法? -字符,而不是没有手动修改csv文件.我搜索但没找到任何东西.

为了澄清我的问题,它看起来像这样:

CSV文件

"A",       "B",        "C",       "D"
"value 1", "value 2",  "value 3", "value 4"
"value 5", "value 6\", "value 7", "value 8"
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样(不是真的,但它显示了我的问题):

String inFile = "in.csv";
CSVReader reader = new CSVReader(new FileReader(inFile));
String[] line;

while ((line = reader.readNext()) != null) {
    for (int i = 0; i < line.length(); i++) {
        System.out.println(i + " " + line[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个解析成一个String [],每个元素包含4个元素,但最后一行只解析为两个元素,如下面的输出所示.

1 A
2 B
3 C
4 D
1 value 1
2 value 2
3 value 3
4 value 4
1 value 5
2 value 6",value 7,value 8
Run Code Online (Sandbox Code Playgroud)

我试图将读者更改为:

CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(inFile), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

但没有任何运气.

use*_*001 14

也许更改Reader的构造函数中的转义字符?

CSVReader(new InputStreamReader(new FileInputStream(inFile)), ',', '"', '|') 
Run Code Online (Sandbox Code Playgroud)

假设|未在您的CVS文件中使用

  • 试试''\ 0'`.我认为这对CVS无效 (4认同)

vat*_*ada 5

更清洁和推荐的解决方案是使用RFC4180Parser而不是默认CSVParser

String csv = "come,csv,string";
RFC4180Parser rfc4180Parser = new RFC4180ParserBuilder().build();
CSVReader csvReader = new CSVReaderBuilder(new StringReader(csv)).withCSVParser(rfc4180Parser).build(); 
Run Code Online (Sandbox Code Playgroud)

参考:https : //sourceforge.net/p/opencsv/support-requests/50/