--- /dev/null
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class CSVUtils {
+
+ private static final char DEFAULT_SEPARATOR = ',';
+ private static final char DEFAULT_QUOTE = '"';
+
+ public static List<String> parseLine(String cvsLine) {
+ return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE);
+ }
+
+ public static List<String> parseLine(String cvsLine, char separators) {
+ return parseLine(cvsLine, separators, DEFAULT_QUOTE);
+ }
+
+ public static List<String> parseLine(String cvsLine, char separators, char customQuote) {
+
+ List<String> result = new ArrayList<>();
+
+ //if empty, return!
+ if (cvsLine == null && cvsLine.isEmpty()) {
+ return result;
+ }
+
+ if (customQuote == ' ') {
+ customQuote = DEFAULT_QUOTE;
+ }
+
+ if (separators == ' ') {
+ separators = DEFAULT_SEPARATOR;
+ }
+
+ StringBuffer curVal = new StringBuffer();
+ boolean inQuotes = false;
+ boolean startCollectChar = false;
+ boolean doubleQuotesInColumn = false;
+
+ char[] chars = cvsLine.toCharArray();
+
+ for (char ch : chars) {
+
+ if (inQuotes) {
+ startCollectChar = true;
+ if (ch == customQuote) {
+ inQuotes = false;
+ doubleQuotesInColumn = false;
+ } else {
+
+ //Fixed : allow "" in custom quote enclosed
+ if (ch == '\"') {
+ if (!doubleQuotesInColumn) {
+ curVal.append(ch);
+ doubleQuotesInColumn = true;
+ }
+ } else {
+ curVal.append(ch);
+ }
+
+ }
+ } else {
+ if (ch == customQuote) {
+
+ inQuotes = true;
+
+ //Fixed : allow "" in empty quote enclosed
+ if (chars[0] != '"' && customQuote == '\"') {
+ curVal.append('"');
+ }
+
+ //double quotes in column will hit this!
+ if (startCollectChar) {
+ curVal.append('"');
+ }
+
+ } else if (ch == separators) {
+
+ result.add(curVal.toString());
+
+ curVal = new StringBuffer();
+ startCollectChar = false;
+
+ } else if (ch == '\r') {
+ //ignore LF characters
+ continue;
+ } else if (ch == '\n') {
+ //the end, break!
+ break;
+ } else {
+ curVal.append(ch);
+ }
+ }
+
+ }
+
+ result.add(curVal.toString());
+
+ return result;
+ }
+
+}
\ No newline at end of file
personArrayList.add(person12);
Person person13 = new Person("Rodolphe", "Germany", 212, 108, "black");
personArrayList.add(person13);
- Person person14 = new Person("Rodolphe", "Norway", 212, 108, "blue");
+ Person person14 = new Person("Rodolphe", "Norway", 173, 83, "blue");
personArrayList.add(person14);
Person person15 = new Person("Abdel", "Mali", 168, 52, "black");
personArrayList.add(person15);