2016-04-20 5 views
-1

GWT не позволяет мне использовать Character.toUpperCase(char) и Character.toLowerCase(char). Как я могу переписать метод ниже, чтобы не использовать Character класс или любую внешнюю библиотекуКак прописные и строчные буквы Char

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

XY проблема, может быть? – Luc

+1

Что именно вы имеете в виду? Класс 'Character' является частью GWT [уровня эмуляции] (http://www.gwtproject.org/doc/latest/RefJreEmulation.html#Package_java_lang). – vanje

+0

Вы получаете ошибку компиляции или есть ли исключение? – vanje

ответ

2

Если каким-то образом, вы не можете использовать класс символов (хотя это звучит довольно сумасшедший), вы можете добавить или вычесть значения 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

Просто используйте основные операторы

if (c >= 'a' && c <= 'z') 
    c = c - 'a' + 'A'; // lower to upper 
if (c >= 'A' && c <= 'Z') 
    c = c - 'A' + 'a'; // upper to lower 
2

Вот TOLOWER и TOUPPER с использованием значений ASCII. Надеюсь, поможет.

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; 
} 
+0

Checkstyle не любит магические числа, и я тоже. Поэтому я предлагаю заменить эти 6 целых чисел на константы. – Akkusativobjekt

+0

Это не полный рабочий пример, который вы знаете. Если автор решит использовать этот подход в качестве своего окончательного решения, он может настроить его, как ему нравится. –

Смежные вопросы