如何删除双引号,而阅读CSV


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

}

输出
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] 

您可以尝试通过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");
  }
}

有一个很棒的Java CSV Reader可以帮你处理这些麻烦,http://opencsv.sourceforge.net/

如果你的项目是maven,它有一个maven包,否则你可以在那里下载jar。

如果分号位于每行CSV的开头,则可以:

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

将删除该特定字符串的第一个和最后一个字符。然后需要将结果存储在某个地方或打印出来。

检查String是否以双引号开头也很重要,否则代码将开始删除CSV值的第一个字符。我这样做在我的代码在我的一个应用程序,我的CSV值是在rowData[1]有时有双引号,有时没有,这取决于字的数量值字符串。

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

相关内容

  • 没有找到相关文章

最新更新