public static boolean isEqualIgnoreCaseAndSpecialChars(final String s1, final String s2) {
        if (Objects.equals(s1, s2)) {
            return true;
        }
        if (s1 == null || s2 == null) {
            return false;
        }
        return toComparableStringIgnoreCaseAndSpecialChars(s1).equals(toComparableStringIgnoreCaseAndSpecialChars(s2));
    }
Shortens a given text to a maximum given number of characters. In case the text is too long it
is shortened according to a given begin-end-distribution-value. Deleted text part is marked with '...'

@param text                 text to shorten. If text is shorter than maxLength it remains unchanged
@param maxLength            maxLength to shorten text to.
@param beginEndDistribution begin-end-distribution to obey on shortening. If >=1 then text is shortened at the end.
                            If <=0 then text is shortened at the beginning. If between 0-1 then text is shortened at beginning and end in relation to this value.
@return the shortened text
main/src/main/java/cgeo/geocaching/utils/TextUtils.java