19

我想使用一些预定义的库将任何字符串转换为修改后的骆驼大小写或标题大小写,而不是编写我自己的函数。

例如"HI tHiS is SomE Statement""Hi This Is Some Statement"

正则表达式或任何标准库都会帮助我。

我在 Eclipse 中发现了某些库函数,比如STRING.toCamelCase();是否存在这样的东西?

4

4 回答 4

23

我用下面的方法来解决这个问题。

import org.apache.commons.lang.StringUtils;
StringUtils.capitalize(MyString);

感谢 Ted Hopp 正确地指出问题应该是 TITLE CASE 而不是修改后的 CAMEL CASE。

Camel Case 通常在单词之间没有空格。

于 2013-06-13T03:38:40.680 回答
23

您可以轻松编写方法来做到这一点:

  public static String toCamelCase(final String init) {
    if (init == null)
        return null;

    final StringBuilder ret = new StringBuilder(init.length());

    for (final String word : init.split(" ")) {
        if (!word.isEmpty()) {
            ret.append(Character.toUpperCase(word.charAt(0)));
            ret.append(word.substring(1).toLowerCase());
        }
        if (!(ret.length() == init.length()))
            ret.append(" ");
    }

    return ret.toString();
}
于 2013-06-13T03:01:12.110 回答
20

来自commons-lang3

org.apache.commons.lang3.text.WordUtils.capitalizeFully(String str)
于 2013-06-13T03:03:37.583 回答
1

参考:

    static String toCamelCase(String s){
           String[] parts = s.split(" ");
           String camelCaseString = "";
           for (String part : parts){
               if(part!=null && part.trim().length()>0)
              camelCaseString = camelCaseString + toProperCase(part);
               else
                   camelCaseString=camelCaseString+part+" ";   
           }
           return camelCaseString;
        }

        static String toProperCase(String s) {
            String temp=s.trim();
            String spaces="";
            if(temp.length()!=s.length())
            {
            int startCharIndex=s.charAt(temp.indexOf(0));
            spaces=s.substring(0,startCharIndex);
            }
            temp=temp.substring(0, 1).toUpperCase() +
            spaces+temp.substring(1).toLowerCase()+" ";
            return temp;

        }
  public static void main(String[] args) {
     String string="HI tHiS is   SomE Statement";
     System.out.println(toCamelCase(string));
  }
于 2013-06-13T03:17:19.327 回答