我尝试用两个API-JSefa和OpenCSV-解析CSV文件,但问题是CSV文件中的分隔符是一个双制表符“\t\t”,并且API只接受字符,而不是字符串作为分隔符。有没有其他的API可以解决这个问题,或者有没有一种方法可以在Jsefa或OpenCSV中确定一个新的字符串分隔符?在解析之前,作为最后的手段,我可以尝试用一个双标签替换双标签,但我希望用一种更干净的方式来做。
x6492ojm1#
网上有101个例子。我在谷歌上搜索了“java parse csv”,这是第一个结果:http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/使用String作为分隔符,但这是代码而不是API。考虑到解析CSV文件是一个非常简单的过程,我不认为这是一个需要库的情况的好例子,特别是对于一个有点独特的需求,比如你有一个奇怪的\t\t分隔符,它可能更好地只是编码它。
\t\t
unguejic2#
试试这个:
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) {}
g2ieeal73#
是的,正确的是opencsv不支持String作为删除限制器。一个简单的解决方案是使用'\t'作为空字段并忽略空字段。例如:
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] = ""; ...
xfb7svmp4#
您建议的解决方案(用字符替换分隔符字符串)似乎是最好的解决方案,因为它很容易解决您的问题。CSV是一种非常简单的格式,如果你修改它添加复杂的分隔符,那么它就不再是一种“逗号分隔值”格式了。保持简单!
bkhjykvo5#
Apache commons-csv模块几年前在v1.9.0中添加了对字符串分隔符的支持。https://issues.apache.org/jira/browse/CSV-206
commons-csv
5条答案
按热度按时间x6492ojm1#
网上有101个例子。我在谷歌上搜索了“java parse csv”,这是第一个结果:
http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
使用String作为分隔符,但这是代码而不是API。
考虑到解析CSV文件是一个非常简单的过程,我不认为这是一个需要库的情况的好例子,特别是对于一个有点独特的需求,比如你有一个奇怪的
\t\t
分隔符,它可能更好地只是编码它。unguejic2#
试试这个:
g2ieeal73#
是的,正确的是
opencsv
不支持String
作为删除限制器。一个简单的解决方案是使用
'\t'
作为空字段并忽略空字段。例如:
到
xfb7svmp4#
您建议的解决方案(用字符替换分隔符字符串)似乎是最好的解决方案,因为它很容易解决您的问题。CSV是一种非常简单的格式,如果你修改它添加复杂的分隔符,那么它就不再是一种“逗号分隔值”格式了。保持简单!
bkhjykvo5#
Apache
commons-csv
模块几年前在v1.9.0中添加了对字符串分隔符的支持。https://issues.apache.org/jira/browse/CSV-206