Reader in = new FileReader(dataFile);
Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().withIgnoreEmptyLines(true).withTrim().parse(in);
// Reads the data in csv file until last row is encountered
for (CSVRecord record : records) {
String column1= record.get("column1");
这里csv文件中的column1值类似于&#34; 1234557。所以当我读到列时,它会在开头用引号读取。在Apache commons csv中有没有办法跳过这些。
来自csv档案的样本数据:&#34;&#34;&#34; 0996108562&#34;,&#34;&#34;&#34; 204979956&#34;
答案 0 :(得分:2)
无法使用{MCER(Minimal, Complete, and Verifiable example)commons-csv-1.4.jar
使用String input = "column1,column2\r\n" +
"1,Foo\r\n" +
"\"2\",\"Bar\"\r\n";
CSVFormat csvFormat = CSVFormat.RFC4180.withFirstRecordAsHeader()
.withIgnoreEmptyLines(true)
.withTrim();
try (CSVParser records = csvFormat.parse(new StringReader(input))) {
for (CSVRecord record : records) {
String column1 = record.get("column1");
String column2 = record.get("column2");
System.out.println(column1 + ": "+ column2);
}
}
进行复制:
1: Foo
2: Bar
输出:
"2"
"Bar"
和 <add name="oraclebldb" connectionString="DataSource=SKM.SMEBANK.ORG;Persist Security Info=True;User ID=bldb;Password=bldb;Unicode=True" providerName="System.Data.OracleClient"/>
<add name="OraConnectionString" connectionString="Data Source=skm;Persist Security Info=True;User ID=bldb;Password=bldb;Unicode=True" providerName="System.Data.OracleClient"/>
周围的引号已被删除。
答案 1 :(得分:0)
如果我正确理解您的要求,您需要使用Apache的StringEscapeUtils中的unescapeCsv。正如医生所说:
如果值包含在双引号中,并且包含逗号,换行符&gt;&gt;或双引号,则会删除引号。
任何双引号转义字符(一对双引号)都不会转义为一个双引号。
如果该值未包含在双引号中,或者是否包含逗号,换行符或双引号,则返回String值不变。