private void simplifySubject()

in src/main/java/org/apache/commons/net/nntp/Article.java [334:387]


    private void simplifySubject() {
        int start = 0;
        final String subject = getSubject();
        final int len = subject.length();

        boolean done = false;

        while (!done) {
            done = true;

            // skip whitespace
            // "Re: " breaks this
            while (start < len && subject.charAt(start) == ' ') {
                start++;
            }

            if (start < len - 2 && (subject.charAt(start) == 'r' || subject.charAt(start) == 'R')
                    && (subject.charAt(start + 1) == 'e' || subject.charAt(start + 1) == 'E')) {

                if (subject.charAt(start + 2) == ':') {
                    start += 3; // Skip "Re:"
                    done = false;
                } else if (start < len - 2 && (subject.charAt(start + 2) == '[' || subject.charAt(start + 2) == '(')) {

                    int i = start + 3;

                    while (i < len && subject.charAt(i) >= '0' && subject.charAt(i) <= '9') {
                        i++;
                    }

                    if (i < len - 1 && (subject.charAt(i) == ']' || subject.charAt(i) == ')') && subject.charAt(i + 1) == ':') {
                        start = i + 2;
                        done = false;
                    }
                }
            }

            if ("(no subject)".equals(simplifiedSubject)) {
                simplifiedSubject = "";
            }

            int end = len;

            while (end > start && subject.charAt(end - 1) < ' ') {
                end--;
            }

            if (start == 0 && end == len) {
                simplifiedSubject = subject;
            } else {
                simplifiedSubject = subject.substring(start, end);
            }
        }
    }