我有以下格式的数据
PAL : PAL : NF : "INCOME"."Taxable"
PAL : PAL : NF : "EXPENSES"."TotalExpenses"
PAL : PAL : NF : "EXPENSES"."Exceptional"
在Java中,我只想在不进行任何格式化的情况下对数据进行定界,在输出中也应加上引号。我通常使用Univocity,在使用以下代码时,
//Simple CSV File Read
List<String[]> allRows;
try {
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");
settings.getFormat().setDelimiter(':');
CsvParser parser = new CsvParser(settings);
allRows = parser.parseAll(new FileReader(new File(csvFile)));
int i =0, cols=0;
for(String[] str:allRows){
i++;
cols = str.length;
for(String s:str)
System.out.print(s+" == ");
System.out.println("");
if(i == 10) break;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出如下,句点符号在引号内,我期望输出像输入,引号应该出现。
PAL == PAL == NF == INCOME"."Taxable
PAL == PAL == NF == EXPENSES"."TotalExpenses
PAL == PAL == NF == EXPENSES"."Exceptional
预期产量
PAL == PAL == NF == "INCOME"."Taxable"
PAL == PAL == NF == "EXPENSES"."TotalExpenses"
PAL == PAL == NF == "EXPENSES"."Exceptional"
最佳答案
这里是图书馆的作者。事实是,"INCOME"."Taxable"
被当作带引号的值处理,并且将INCOME
和Taxable
之间的引号视为未转义的引号。
基本上,它将尝试“抢救”该值并找到右引号或定界符(由settings.setUnescapedQuoteHandling(...)
确定)。
在您的情况下,最简单的方法是将引号字符设置为'
或什至\0
,如果您的输入始终不必处理带引号的值。有了这个,您应该得到期望的"INCOME"."Taxable"
。
希望这可以帮助