代码之家  ›  专栏  ›  技术社区  ›  Andreas Dolk

将字符串中的单个字符转换为小写

  •  14
  • Andreas Dolk  · 技术社区  · 17 年前

    我喜欢从getter方法中“猜测”属性名。因此,“getSomeAttribute”应转换为“someAttribute”。

    通常我会做类似的事情

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

    很难看,对吧?我通常用一种方法来隐藏它,但有谁知道更好的解决方案吗?

    7 回复  |  直到 17 年前
        1
  •  13
  •   Josh Curren    17 年前

    我认为你的解决方案很好。我认为没有比这更简单的方法了。

        2
  •  4
  •   Valentin Rocher    17 年前

    uncapitalize 朗格公地的方法会对你有所帮助,但我认为你的解决办法并不那么粗糙。

        3
  •  3
  •   McDowell rahul gupta    17 年前

    看一看这本书 JavaBeans API

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

    也看到 decapitalize .

        4
  •  3
  •   Tim Büthe    17 年前

    uncapitalize 从…起 commons lang 我会这样做:

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

    我非常需要commons lang,但是如果你不喜欢这个额外的jar,你可以复制这个方法。正如你在书中看到的,他们就像你一样:

    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();
    }
    
        5
  •  2
  •   Peter Lawrey    17 年前

    值得记住的是;

    • 并非所有getXXX方法都是getter,例如double getSqrt(double x)、void getup()。
    • 返回boolean、以is开头且不接受参数的方法可以是getter,例如boolean isActive()。
        6
  •  2
  •   DeadDingo    12 年前

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

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

    测试和功能:)

        7
  •  0
  •   Paul Brinkley    17 年前

    我觉得不错。是的,它看起来冗长,但是考虑你正在尝试做什么,以及另一个程序员如果他们试图理解这个代码试图做什么,他们会怎么想。如果有什么不同的话,我会将您正在做的事情(从getter方法猜测属性名)添加为注释,从而使它更长。