2014-06-06 2 views
6
public class CSVTeast { 
    public static void main(String[] args) { 

     CSVTeast obj = new CSVTeast(); 
     obj.run(); 

     } 

     public void run() { 

     String csvFile = "D:\\text.csv"; 
     BufferedReader br = null; 
     String line = ""; 
     String cvsSplitBy = "~"; 

     try { 

      br = new BufferedReader(new FileReader(csvFile)); 
      while ((line = br.readLine()) != null) { 

        // use comma as separator 

       String[] csvRead = line.split(cvsSplitBy); 




       System.out.println("Value [date= " + csvRead[5] 
            + " , name=" + csvRead[9]+"]"); 

      } 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     System.out.println("Done"); 
     } 


} 

Выходкак удалить двойные кавычки при чтении CSV

Value [date= "POLICY_CHANGE_EFFECTIVE_DATE" , name="AGENCY_NAME"] 

Value [date= "2014-04-01" , name="USI INSURANCE SERVICES]--this value stated with double qoutes but not end with same . 

Ожидаемый результат

Value [date= POLICY_CHANGE_EFFECTIVE_DATE , name=AGENCY_NAME] 

Value [date= 2014-04-01 , name=USI INSURANCE SERVICES] 
+0

Вы также можете разместить содержимое csv-файла? – Yasin

+0

@Anandv, если это не слишком много проблем, то ответ будет полезен, спасибо :) –

ответ

5

Вы можете попробовать передавая значение с помощью метода string.replace().

Так что ваш код будет:

public class CSVTeast { 
public static void main(String[] args) { 

    CSVTeast obj = new CSVTeast(); 
    obj.run(); 
    } 
    public void run() { 
    String csvFile = "D:\\text.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = "~"; 
    try { 
     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 
      String[] csvRead = line.split(cvsSplitBy); 
      System.out.println("Value [date= " + csvRead[5].replace("\"","") 
           + " , name=" + csvRead[9].replace("\"","")+"]"); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    System.out.println("Done"); 
    } 
} 
2

Там хороший CSV чтения для Java, который будет обрабатывать беспорядок это для вас, http://opencsv.sourceforge.net/

Он имеет пакет Maven, если ваш проект Maven, иначе вы можете скачать JAR там.

1

Если qoutemarks находятся в начале каждой строки CSV, вы можете сделать:

csvRead[5].substring(1, csvRead[5].length()-1) 

Это удалит первый и последний символ этой конкретной строки. Затем вам нужно где-то сохранить результаты или распечатать их.

+0

некоторые значения начинаются и заканчиваются кавычками, а некоторые заканчиваются, а некоторые начинаются с qouted – Anandv

1

Также важно проверить, начинается ли строка с двойной кавычки, иначе код начнет удалять первый символ значения CSV. Я делаю это в своем коде в одном из своих приложений, где мое значение CSV поступает в rowData [1], которое иногда имеет двойные кавычки, а иногда и нет, в зависимости от количества слов в значении String.

String item = (String.valueOf(rowData[1].charAt(0)).equals("\"") ? rowData[1].substring(1, rowData[1].length() - 1) : rowData[1]);