protected Collection splitString()

in src/main/java/org/apache/commons/configuration2/convert/LegacyListDelimiterHandler.java [180:234]


    protected Collection<String> splitString(final String s, final boolean trim) {
        if (s.indexOf(getDelimiter()) < 0) {
            return Collections.singleton(s);
        }

        final List<String> list = new ArrayList<>();

        StringBuilder token = new StringBuilder();
        int begin = 0;
        boolean inEscape = false;
        final char esc = ESCAPE.charAt(0);

        while (begin < s.length()) {
            final char c = s.charAt(begin);
            if (inEscape) {
                // last character was the escape marker
                // can current character be escaped?
                if (c != getDelimiter() && c != esc) {
                    // no, also add escape character
                    token.append(esc);
                }
                token.append(c);
                inEscape = false;
            } else if (c == getDelimiter()) {
                // found a list delimiter -> add token and
                // resetDefaultFileSystem buffer
                String t = token.toString();
                if (trim) {
                    t = t.trim();
                }
                list.add(t);
                token = new StringBuilder();
            } else if (c == esc) {
                // eventually escape next character
                inEscape = true;
            } else {
                token.append(c);
            }

            begin++;
        }

        // Trailing delimiter?
        if (inEscape) {
            token.append(esc);
        }
        // Add last token
        String t = token.toString();
        if (trim) {
            t = t.trim();
        }
        list.add(t);

        return list;
    }