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