簡體   English   中英

讀取 CSV 文件時處理逗號

[英]Dealing with commas when reading a CSV file

另一部分沒有錯。 我閱讀了excel文件的行。 但我想拆分這個excel的單元格。 我使用語句String []values1 = data1.split(","); values1[5]=values1[5].replace('"', ' ').trim(); 。但是有一個特定的單元格,其中有一個, 。這個逗號破壞了排列順序。我應該怎么做處理它?

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();
    }
}

有一個簡單的答案和一個正確的答案。

簡單的答案是使用正則表達式更健壯地解析字符串,例如,

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

但是 CSV 被證明是相當困難的,因為有許多極端情況需要考慮。

正確的答案是為此使用一個庫,並且碰巧有很多: JSefaOpenCSV等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM