package com.yeshi.fanli.util; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * CsvParser */ public class CsvParser { // Saved input CSV file pathname private String inputCsvFile; // Space mark , ; : etc. private String spaceMark = ","; /** * Contructor * * @param inputCsvFile */ public CsvParser(String inputCsvFile, String spaceMark) { this.inputCsvFile = inputCsvFile; this.spaceMark = spaceMark; } /** * Contructor * * @param inputCsvFile */ public CsvParser(String inputCsvFile) { this.inputCsvFile = inputCsvFile; this.spaceMark = ","; } /** * Get parsed array from CSV file * * @return */ public Object[] getParsedArray() throws Exception { List> retval = new ArrayList>(); String regExp = getRegExp(); BufferedReader in = new BufferedReader(new FileReader(this.inputCsvFile)); String strLine; String str = ""; while ((strLine = in.readLine()) != null) { Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(strLine); List listTemp = new ArrayList(); while (matcher.find()) { str = matcher.group(); str = str.trim(); if (str.endsWith(spaceMark)) { str = str.substring(0, str.length() - 1); str = str.trim(); } if (str.startsWith("\"") && str.endsWith("\"")) { str = str.substring(1, str.length() - 1); if (CsvParser.isExisted("\"\"", str)) { str = str.replaceAll("\"\"", "\""); } } if (!"".equals(str)) { listTemp.add(str); } } // Add to retval retval.add(listTemp); } in.close(); return retval.toArray(); } /** * Regular Expression for CSV parse * * @return */ private String getRegExp() { // TODO 未完 StringBuffer strRegExps = new StringBuffer(); return strRegExps.toString(); } /** * If argChar is exist in argStr * * @param argChar * @param argStr * @return */ private static boolean isExisted(String argChar, String argStr) { boolean blnReturnValue = false; if ((argStr.indexOf(argChar) >= 0) && (argStr.indexOf(argChar) <= argStr.length())) { blnReturnValue = true; } return blnReturnValue; } /** * Test * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { CsvParser parser = new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test CSV Files\\dummydata_not quoted_1.csv"); // CsvParser parser=new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test // CSV Files\\dummydata_not quoted_2.csv"); // CsvParser parser=new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test // CSV Files\\dummydata_quoted.csv"); // CsvParser parser=new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test // CSV Files\\dummydata_quoted_2.csv"); // CsvParser parser=new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test // CSV Files\\dummydata_1.csv",";"); // CsvParser parser=new CsvParser("C:\\Users\\IBM_ADMIN\\Desktop\\Test // CSV Files\\dummydata_2.csv",":"); Object[] arr = parser.getParsedArray(); // System.out.println(arr); for (Object obj : arr) { System.out.print("["); List ls = (List) obj; for (String item : ls) { System.out.println(item + ","); } System.out.println("],"); } } }