how to read two consecutive commas from .csv file format as unique value in java

偶尔善良 提交于 2019-12-25 05:33:25

问题


Suppose csv file contains

1,112,,ASIF

Following code eliminates the null value in between two consecutive commas. Code provided is more than it is required

   String p1=null, p2=null;       
    while ((lineData = Buffreadr.readLine()) != null)
        {
        row = new Vector(); int i=0;
        StringTokenizer st = new StringTokenizer(lineData, ",");

               while(st.hasMoreTokens())
               {
                row.addElement(st.nextElement());
                    if (row.get(i).toString().startsWith("\"")==true)
                    {
                        while(row.get(i).toString().endsWith("\"")==false)
                        {
                        p1= row.get(i).toString();
                        p2= st.nextElement().toString();                            
                        row.set(i,p1+", "+p2);
                        }                           
                        String CellValue= row.get(i).toString();
                        CellValue= CellValue.substring(1, CellValue.length() - 1);
                        row.set(i,CellValue);
                        //System.out.println(" Final Cell Value : "+row.get(i).toString());
                    }                       

                                            eror=row.get(i).toString();                     
                        try
                            {
                        eror=eror.replace('\'',' ');
                        eror=eror.replace('['  , ' ');
                        eror=eror.replace(']'  , ' ');
                        //System.out.println("Error "+ eror);
                        row.remove(i);
                        row.insertElementAt(eror, i);
                            } 
                        catch (Exception e) 
                            {
                            System.out.println("Error exception "+ eror); 
                            }
                        //}
                i++;
               }

how to read two consecutive commas from .csv file format as unique value in java.


回答1:


Here is an example of doing this by splitting to String array. Changed lines are marked as comments.

// Start of your code.
            row = new Vector(); int i=0;
        String[] st = lineData.split(","); // Changed
        for (String s : st) { // Changed
            row.addElement(s); // Changed
            if (row.get(i).toString().startsWith("\"") == true) {
                while (row.get(i).toString().endsWith("\"") == false) {
                    p1 = row.get(i).toString();
                    p2 = s.toString(); // Changed
                    row.set(i, p1 + ", " + p2);
                }
                ...// Rest of Code here
        }



回答2:


The StringTokenizer skpis empty tokens. This is their behavious. From the JLS

StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

Just use String.split(",") and you are done.




回答3:


Just read the whole line into a string then do string.split(",").

The resulting array should have exactly what you are looking for...

If you need to check for "escaped" commas then you will need some regex for the query instead of a simple ",".

while ((lineData = Buffreadr.readLine()) != null) {
    String[] row = line.split(",");
    // Now process the array however you like, each cell in the csv is one entry in the array


来源:https://stackoverflow.com/questions/20542992/how-to-read-two-consecutive-commas-from-csv-file-format-as-unique-value-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!