使用自定义字符串分隔符解析CSV文件

vmpqdwk3  于 2023-10-13  发布在  其他
关注(0)|答案(5)|浏览(144)

我尝试用两个API-JSefaOpenCSV-解析CSV文件,但问题是CSV文件中的分隔符是一个双制表符“\t\t”,并且API只接受字符,而不是字符串作为分隔符。
有没有其他的API可以解决这个问题,或者有没有一种方法可以在Jsefa或OpenCSV中确定一个新的字符串分隔符?
在解析之前,作为最后的手段,我可以尝试用一个双标签替换双标签,但我希望用一种更干净的方式来做。

x6492ojm

x6492ojm1#

网上有101个例子。我在谷歌上搜索了“java parse csv”,这是第一个结果:
http://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
使用String作为分隔符,但这是代码而不是API。
考虑到解析CSV文件是一个非常简单的过程,我不认为这是一个需要库的情况的好例子,特别是对于一个有点独特的需求,比如你有一个奇怪的\t\t分隔符,它可能更好地只是编码它。

unguejic

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) {}
g2ieeal7

g2ieeal73#

是的,正确的是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] = "";
...
xfb7svmp

xfb7svmp4#

您建议的解决方案(用字符替换分隔符字符串)似乎是最好的解决方案,因为它很容易解决您的问题。CSV是一种非常简单的格式,如果你修改它添加复杂的分隔符,那么它就不再是一种“逗号分隔值”格式了。保持简单!

bkhjykvo

bkhjykvo5#

Apache commons-csv模块几年前在v1.9.0中添加了对字符串分隔符的支持。
https://issues.apache.org/jira/browse/CSV-206

相关问题