我尝试使用两个API解析CSV文件 - JSefa和OpenCSV - 但问题是CSV文件中的分隔符是双选项卡" \ t \ t&# 34;并且API仅接受分隔符的字符,而不是字符串。
是否有其他API可以解决问题,或者有办法在Jsefa或OpenCSV中确定新的String分隔符?
作为最后的手段,我可以在解析之前尝试用分号替换双标签,但我希望这样做更清洁。
答案 0 :(得分:1)
网上有101个例子。我用Google搜索“java parse csv”,这是第一个结果:
http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
使用String作为分隔符,但这是代码而不是API。
鉴于解析CSV文件是一个非常简单的过程,我不认为这是一个需要库的情况的一个很好的例子 - 特别是有一个像奇怪的\t\t
分隔符一样的独特要求 - 无论如何,最好只编码它。
答案 1 :(得分:0)
试试这个:
ArrayList<String> itemsOne=new ArrayList<String>();
ArrayList<String> itemsTwo=new ArrayList<String>();
InputStream is = getResources().openRawResource(R.raw.csvfile);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null ) {
String [] rowData = line.split("\t\t");
itemsOne.add(rowData[0]);
itemsTwo.add(rowData[1]);
}
} catch (Exception e) {}
答案 2 :(得分:0)
是的,opencsv
不支持String
作为删除者是正确的。
一个简单的解决方案是使用'\t'
作为分隔符并忽略空字段。
例如:
String s = "1\t\t2\t\t3\t\t4";
到
String[7] fields;
fields[0] = "1";
fields[1] = "";
fields[2] = "2";
fields[3] = "";
...
答案 3 :(得分:0)
你建议的解决方案(用字符替换分隔符字符串似乎是最好的,因为很容易解决你的问题。 CSV是一种非常简单的格式,如果你修改它添加复杂的分隔符,那么它不是&#34;逗号分隔值&#34;格式化了。保持简单!