public String filter()

in core/src/main/java/org/apache/sling/cms/core/internal/operations/PropertyHintNodeNameGenerator.java [72:101]


    public String filter(String nodeName) {
        final StringBuilder sb = new StringBuilder();
        char lastAdded = 0;

        nodeName = nodeName.toLowerCase();
        for (int i = 0; i < nodeName.length(); i++) {
            final char c = nodeName.charAt(i);
            char toAdd = c;

            if (allowedChars.indexOf(c) < 0) {
                if (lastAdded == replacementChar) {
                    // do not add several _ in a row
                    continue;
                }
                toAdd = replacementChar;

            } else if (i == 0 && Character.isDigit(c)) {
                sb.append(replacementChar);
            }

            sb.append(toAdd);
            lastAdded = toAdd;
        }

        if (sb.length() == 0) {
            sb.append(replacementChar);
        }

        return sb.toString();
    }