使用java中csv的逗号读取值

时间:2014-03-05 06:05:59

标签: java android csv

我有以下代码从android中的csv文件中读取。当我的列值中有逗号时,它可以正常工作。

    File file = new File(IMPORT_ITEM_FILE.getPath());

    BufferedReader bufRdr = null;
    try {
        bufRdr = new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e) {

    }
    String line = null;

    try {
        while ((line = bufRdr.readLine()) != null) {

            String[] insertValues = line.split(",");


                string column1 = insertValues[1];

                string column2 = insertValues[2];
        }

        bufRdr.close();
    }

我的csv行就像:用户名,“某些字符串,带逗号”,“2740740,2740608”,“some,string,with逗号”

如何在列值中转义逗号以读取列。

2 个答案:

答案 0 :(得分:3)

我建议你使用http://opencsv.sourceforge.net/。如果您的CSV文件源文件格式正确,它将为您处理所有事情。

使用示例:

InputStream csvStream = getAssets().open(yourCSVFile);
        InputStreamReader csvStreamReader = new InputStreamReader(csvStream);
        CSVReader csvReader = new CSVReader(csvStreamReader);
        String[] line;

        while ((line = csvReader.readNext()) != null) {
                     String example = line[0]; // first item of your csv row
                  }

答案 1 :(得分:1)

我建议使用RegEx进行拆分。您可以使用以下内容:\"(.*?)\",?

我在我使用的计算机上没有Java设置,但像这样的应该工作。不能保证它会编译。

String myString = "\"name of user\",\"official address, city\",\"2740740, 2740608\",,\"address, city, state\""

Pattern myPattern = Pattern.compile("\"(.*?)\",?"); 
Matcher myMatcher = myPattern.matcher(myString); // myPattern to match against string
while (myMatcher.find())
{
    System.out.println(myMatcher.group(1));
}