我怎样才能将Char大写和小写

时间:2016-04-20 11:49:08

标签: java gwt

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();
}

3 个答案:

答案 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;
}