在读取CSV文件时处理逗号

时间:2014-03-31 14:19:54

标签: java csv comma

其他部分没有错。我读了excel文件的行。但我想拆分这个excel的细胞。我使用语句String []values1 = data1.split(",");values1[5]=values1[5].replace('"', ' ').trim();。但是有一个特定的单元格,其中有,。这个逗号扰乱了排列顺序。我应该如何处理它?<​​/ p>

File DopCan = new File(filesnames[0]);

try
{
    Scanner scanner = new Scanner(DopCan);
    scanner.nextLine();
    scanner.nextLine();

    while(scanner.hasNext())
    {

        String data = scanner.nextLine();
        String []values = data.split(",");
        values[5]=values[5].replace('"', ' ').trim();
        if(Integer.parseInt(values[5])==0)
        {
            i++;
        }
        else
        {
            break;
        }
    }

    scanner.close();

    Scanner scanner1 = new Scanner(DopCan);
    scanner1.nextLine();
    scanner1.nextLine();
    while(scanner.hasNext())
    {
        ArrayList <PollingPlace> files = new ArrayList();
        while (scanner1.hasNext())
        {
            int n=0;
            String data1 = scanner1.nextLine();
            String []values1 = data1.split(","); //Problem here
            scanner1.nextLine();
            String data3=scanner1.nextLine();
            String []values3 = data3.split(",");
            values1[5]=values1[5].replace('"', ' ').trim();
            values1[7]=values1[7].replace('"', ' ').trim();
            values1[14]=values1[14].replace('"', ' ').trim();
            values3[14]=values3[14].replace('"', ' ').trim();
            files.add(new PollingPlace(Integer.parseInt(values1[5]),Integer.parseInt(values1[7]),Integer.parseInt(values1[14]),Integer.parseInt(values3[14])));

            scanner1.nextLine();
            scanner1.close();
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

这是一个简单的答案和正确的答案。

简单的回答是用regexp解析字符串更强大,比方说,

(?:\s*(?:\"([^\"]*)\"|([^,]+))\s*,?)+?

但是,由于需要考虑许多角落案例,因此对于这种情况来说,CSV变得相当困难。

正确的答案是使用一个库,因为它发生了很多:JSefaOpenCSV等。