Конвертировать один символ в строке в нижний регистр - PullRequest
14 голосов
/ 12 мая 2009

Мне нравится «угадывать» имена атрибутов из методов получения. Поэтому getSomeAttribute должен быть преобразован в someAttribute.

Обычно я делаю что-то вроде

String attributeName = Character.toLowerCase(methodName.indexOf(3)) 
                       + methodName.substring(4);

Довольно уродливо, верно? Я обычно скрываю это в методе, но кто-нибудь знает лучшее решение?

Ответы [ 7 ]

13 голосов
/ 12 мая 2009

Я думаю, что ваше решение просто отлично. Я не думаю, что есть более простой способ сделать это.

4 голосов
/ 12 мая 2009

Метод некапитализации Commons Lang поможет вам, но я не думаю, что ваше решение настолько грубое.

3 голосов
/ 12 мая 2009

Посмотрите на API JavaBeans :

BeanInfo info = Introspector.getBeanInfo(bean
       .getClass(), Object.class);
for (PropertyDescriptor propertyDesc : info
       .getPropertyDescriptors()) {
  String name = propertyDesc.getName();
}

Также см. Декапитализация .

3 голосов
/ 12 мая 2009

некапитализируется из commons lang сделает это:

String attributeName = StringUtils.uncapitalize(methodName.substring(3));

Мне нужно много общего, но если вам не нравится эта дополнительная банка, вы можете скопировать метод. Как вы можете видеть, они делают это, как вы:

public static String uncapitalize(String str) {
    int strLen;
    if (str == null || (strLen = str.length()) == 0) {
        return str;
    }
    return new StringBuffer(strLen)
        .append(Character.toLowerCase(str.charAt(0)))
        .append(str.substring(1))
        .toString();
}
2 голосов
/ 21 января 2014

Учитывая символьный буфер, вы можете применить следующий код:

int i = 0;
for(char x : buffer) {
    buffer[i] = Character.toLowerCase(x);
    i++;
}

Проверено и функционирует:)

2 голосов
/ 12 мая 2009

Стоит помнить об этом;

  • не все методы getXXX являются геттерами, например double getSqrt (double x), void getup ().
  • методы, которые возвращают логическое значение, начинаются с is и не принимают аргументы, могут быть получателями, например логический isActive ().
0 голосов
/ 12 мая 2009

выглядит хорошо для меня. Да, это выглядит многословно, но подумайте, что вы пытаетесь сделать, и что бы подумал другой программист, если бы они пытались понять, что пытается делать этот код. Во всяком случае, я бы сделал это длиннее, добавив то, что вы делаете (угадывая имена атрибутов из методов получения), в качестве комментария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...