1

我正在使用 Java,我有一个字符串,并且想将单词的第一个字母变成大写(每个单词用逗号分隔)。

我知道使用WordUtils.capitalize(str)它是可能的,但我所拥有的如下。

String str = "companies,user,";

我知道split并且Wordutils会做这项工作,但我正在寻找单线。


输出看起来是一个字符串

Companies, User
^         ^^

或者

Companies,User
^         ^

并不是

Companies,user
^         ^
4

4 回答 4

3

您可以在单行中尝试以下操作!:

String str = "companies,user,";
        str = String.valueOf(str.charAt(0)).toUpperCase() + str.substring(1,str.indexOf(","))+
            str.substring(str.indexOf(","),str.indexOf(",") + 1) + String.valueOf(str.charAt(str.indexOf(",") + 1)).toUpperCase() + str.substring(str.indexOf(",") + 2);
于 2013-03-24T11:03:19.180 回答
1

Quite simply:

String str = "companies,user,";
String strCaps = Character.toUpperCase(str.charAt(0)) + str.substring(1);

Edit: The only way to make it a single line is to make it a method, and use the method, like so:

public static void main(String[] args)
{
    String str = "companies,user,";
    System.out.println(capitaliseEach(str));
}

static String capitaliseEach(String string)
{
    StringBuilder sb = new StringBuilder();
    String[] split = string.split(",");
    for(int i = 0; i < split.length; i++)
    {
        if(split[i] != null && split[i].length() >= 2)
        {
            sb.append(Character.toUpperCase(split[i].charAt(0))).append(split[i].substring(0));
        }
        if((i + 1) < split.length)
        {
            sb.append(",");
        }
    }
    return sb.toString();
}
于 2013-03-24T10:30:36.040 回答
0

clojure 之类的函数式语言非常适合这种情况。由于 clojure 是一种 jvm 语言,因此您可以从 java 中评估 clojure 代码。如果你绝望,即使是一个班轮:

RT.var("clojure.core", "eval")
      .invoke(RT.var("clojure.core", "read-string")
           .invoke(
              "(clojure.string/join \", \" " +
                "(map clojure.string/capitalize " +
                  "(clojure.string/split \"companies,user,\" #\",\")))"));

普通的clojure版本:

(clojure.string/join 
   ", " (map clojure.string/capitalize 
          (clojure.string/split "companies,user," #",")))

老实说,你永远不会想要那样做!但是,由于您正在寻找单线,我想这值得一玩。

于 2013-03-24T11:14:50.143 回答
0

intiCap 的可重复使用方法

public class YarlagaddaSireeshTest{

    public static void main(String[] args) {
        String FinalStringIs="";
        String testNames="Sireesh,Yarlagadda";
        String[] name=testNames.split(",");

        for(String nameIs :name){
        FinalStringIs+=getIntiCapString(nameIs)+","
                ;
        }
        System.out.println("Final Result "+ FinalStringIs);

    }

    public static String getIntiCapString(String param) {
        if(param != null && param.length()>0){          
            char[] charArray = param.toCharArray(); 
            charArray[0] = Character.toUpperCase(charArray[0]); 
            return new String(charArray); 
        }else{
            return "";
        }
    }
}
于 2013-03-24T10:49:39.830 回答