主要思想:大小写对应字母之差相同,因为在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 }