将String中的单个char转换为小写

时间:2009-05-12 14:17:01

标签: java

我喜欢用getter方法“猜测”属性名称。因此'getSomeAttribute'将转换为'someAttribute'。

通常我会做类似

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

非常难看,对吗?我通常把它隐藏在一个方法中,但有人知道更好的解决方案吗?

7 个答案:

答案 0 :(得分:13)

我认为您的解决方案很好。我认为有更简单的方法可以做到这一点。

答案 1 :(得分:4)

Commons Lang的uncapitalize方法会帮助你,但我不认为你的解决方案是如此粗糙。

答案 2 :(得分:3)

来自uncapitalize

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

答案 3 :(得分:3)

查看JavaBeans API

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

另见decapitalize

答案 4 :(得分:2)

值得记住的是;

  • 并非所有getXXX方法都是getter,例如double getSqrt(double x),void getup()。
  • 返回boolean的方法,以is开头并且不带参数的方法可以是getter,例如boolean isActive()。

答案 5 :(得分:2)

给定字符缓冲区,您可以应用以下代码:

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

测试和功能:)

答案 6 :(得分:0)

对我来说很好看。是的,它看起来很冗长,但考虑一下你正在尝试做什么,以及另一个程序员在试图理解这段代码试图做什么时会想到的。如果有的话,我会通过添加您正在做的事情(从getter方法中猜测属性名称)作为评论来延长时间。