I want to parse the lines of a file. Using parsingMethod
test.csv
Frank George,Henry,Mary / New York,123456 ,Beta Charli,"Delta,Delta Echo ", 25/11/1964, 15/12/1964,"40,000,000.00",0.0975,2,"King, Lincoln ",Alpha
So I read the line
public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\test.csv"); BufferedReader reader = new BufferedReader(new FileReader(file)); String line2; while ((line2= reader.readLine()) !=null) { String[] tab = parsingMethod(line2, ","); for (String i : tab) { System.out.println( i ); } } } public static String[] parsingMethod(String line,String parser) { List<String> liste = new LinkedList<String>(); String patternString ="(([^\"][^"+parser+ "]*)|\"([^\"]*)\")" +parser+"?"; Pattern pattern = Pattern.compile(patternString); Matcher matcher =pattern.matcher(line); while (matcher.find()) { if(matcher.group(2) != null){ liste.add(matcher.group(2).replace("\n","").trim()); }else if(matcher.group(3) != null){ liste.add(matcher.group(3).replace("\n","").trim()); } } String[] result = new String[liste.size()]; return liste.toArray(result); } }
Output:
Frank George Henry Mary / New York 123456 Beta Charli Delta Delta Echo " 25/11/1964 15/12/1964 40,000,000.00 0.0975 2 King Lincoln " Alpha Delta Delta Echo
I want to remove this, "Can someone help me improve my pattern.
Expected Result
Frank George Henry Mary / New York 123456 Beta Charli Delta Delta Echo 25/11/1964 15/12/1964 40,000,000.00 0.0975 2 King Lincoln Alpha Delta Delta Echo
Output for line 3
25/11/1964 15/12/1964 40 000 000.00 0.0975 2 King Lincoln