Airbnb国内OA

CSV parser,将CSV中的每一行,解析为 firstname, lastname, email, interests, notes 和 city, age 这几个字段,然后利用 firstname, interests, city, age字段里的值进行造句。
核心就是csv parser
代码如下

public static List<String>parseCSV(String s) {
    List<String> result = new ArrayList<>();
    if (s == null || s.length() == 0) {
        return result;
    }
 
    boolean inQuote = false;
    StringBuffer sb = new StringBuffer();
 
    for (int i = 0; i < s.length(); i++) {
        if (inQuote) {
            if (s.charAt(i) == '"') {
                 if (i == s.length() - 1) {
                     result.add(sb.toString());
                     return result;
                 } else if (s.charAt(i + 1) =='"') {
                     sb.append('"');
                     i++;
                 } else {
                     result.add(sb.toString());
                     sb.setLength(0);
                     inQuote = false;
                     i++;
                 }
            } else {
                 sb.append(s.charAt(i));
            }
        } else {
            if (s.charAt(i) == '"') {
                 inQuote = true;
            } else if (s.charAt(i) == ',') {
                 result.add(sb.toString());
                 sb.setLength(0);
            } else {
                 sb.append(s.charAt(i));
            }
        }
    }
 
    if (sb.length() > 0) {
        result.add(sb.toString());
    }
 
    return result;
 }