java 字符大小写转换

主要思想:大小写对应字母之差相同,因为在ASSIC表中大小写字母是两段连续的数字。这个差可以用'a' - 'A'表示。

转小写:

    public static char toLowerCase(char c) {
        // BEGIN android-changed
        return (char) toLowerCase((int) c);
        // END android-changed
    }
    public static int toLowerCase(int codePoint) {
        // BEGIN android-changed
        // Optimized case for ASCII
        if ('A' <= codePoint && codePoint <= 'Z') {
            return (char) (codePoint + ('a' - 'A'));
        }
        if (codePoint < 192) {
            return codePoint;
        }
        return UCharacter.toLowerCase(codePoint);
        // END android-changed
    }

转大写:

    public static char toUpperCase(char c) {
        // BEGIN android-changed
        return (char) toUpperCase((int) c);
        // END android-changed
    }
    public static int toUpperCase(int codePoint) {
        // BEGIN android-changed
        // Optimized case for ASCII
        if ('a' <= codePoint && codePoint <= 'z') {
            return (char) (codePoint - ('a' - 'A'));
        }
        if (codePoint < 181) {
            return codePoint;
        }
        return UCharacter.toUpperCase(codePoint);
        // END android-changed
    }