GWT不允许我使用Character.toUpperCase(char)
和Character.toLowerCase(char)
。如何重写下面的方法以不使用Character
类或任何外部库
public static String toDisplayCase(String s) {
final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following
// to be capitalized
StringBuilder sb = new StringBuilder();
boolean capNext = true;
for (char c : s.toCharArray()) {
c = (capNext)
? Character.toUpperCase(c)
: Character.toLowerCase(c);
sb.append(c);
capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
}
return sb.toString();
}
答案 0 :(得分:2)
只需使用基本操作符
if (c >= 'a' && c <= 'z')
c = c - 'a' + 'A'; // lower to upper
if (c >= 'A' && c <= 'Z')
c = c - 'A' + 'a'; // upper to lower
答案 1 :(得分:2)
如果不知何故,你不允许使用Character类(虽然听起来很疯狂),你可以添加或减去ASCII值。
例如:
for (char c : s.toCharArray()) {
c = (capNext)
? ( (c>='a'&&c<='z') ? c+32 : c) //to Upper Case
: ( (c>='A'&&c<='Z') ? c-32 : c) //to Lower Case
sb.append(c);
capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
}
答案 2 :(得分:2)
以下是使用ascii值的toLower和toUpper。希望它有所帮助。
static char toUpperCase(char c) {
if (97 <= c && c <= 122) {
c = (char) ((c - 32));
}
return c;
}
static char toLowerCase(char c) {
if (65 <= c && c <= 90) {
c = (char) ((c + 32));
}
return c;
}