public static String[] parse(String line) {boolean insideQuote = false;ArrayList<String> result = new ArrayList<>();int quoteCount = 0;StringBuilder sb = new StringBuilder();for(int i = 0; i < line.length(); i++) {char c = line.charAt(i);if(c == QUOTE) {insideQuote = !insideQuote;quoteCount++;}if(c == COMMA && !insideQuote) {String value = sb.toString();value = unQuoteUnEscape(value);result.add(value);sb.setLength(0);continue;}sb.append(c);}result.add(sb.toString());if(quoteCount % 2 != 0) {return new String[0];}return result.toArray(new String[0]);}

public static String [ ] parse ( String line ) { boolean insideQuote = false ; ArrayList < String > result = new ArrayList < > ( ) ; int quoteCount = 0 ; StringBuilder sb = new StringBuilder ( ) ; for ( int i = 0 ; i < line . length ( ) ; i ++ ) { char c = line . charAt ( i ) ; if ( c == QUOTE ) { insideQuote = ! insideQuote ; quoteCount ++ ; } if ( c == COMMA && ! insideQuote ) { String value = sb . toString ( ) ; value = unQuoteUnEscape ( value ) ; result . add ( value ) ; sb . setLength ( 0 ) ; continue ; } sb . append ( c ) ; } result . add ( sb . toString ( ) ) ; if ( quoteCount % 2 != 0 ) { return new String [ 0 ] ; } return result . toArray ( new String [ 0 ] ) ; }
public static string[] Parse(string line){bool insideQuote = false;List<string> result = new List<string>();int quoteCount = 0;StringBuilder sb = new StringBuilder();for (int i = 0; i < line.Length; i++){char c = line[i];if (c == QUOTE){insideQuote = !insideQuote;quoteCount++;}if (c == COMMA && !insideQuote){string value = sb.ToString();value = UnQuoteUnEscape(value);result.Add(value);sb.Length = 0;continue;}sb.Append(c);}result.Add(sb.ToString());if (quoteCount % 2 != 0){return new string[0];}return result.ToArray();}
